Java编译时出现No enclosing instance of type XXX is accessible.
今天在编译Java程序的时候出现以下错误:
No enclosing instance of type Main is accessible. Must qualify the allocation with an enclosing instance of type Main (e.g. x.new A() where x is an instance of Main).
我原来编写的源代码是这样的:
public class Main 
{
class Dog //定义一个“狗类”
{
private String name;
private int weight;
public Dog(String name, int weight) 
{
this.setName(name);
this.weight = weight;
}
public int getWeight() 
{
return weight;
}
public void setWeight(int weight) 
{this.weight = weight;}
public void setName(String name)
{this.name = name;}
public String getName() 
{return name;}
}
public static void main(String[] args)
{
Dog d1 = new Dog("dog1",1);
}
}
出现这个错误的时候,我一直不太理解。
在借鉴别人的解释之后才恍然大悟。
在代码中,我的Dog类是定义在Main中的内部类。Dog内部类是动态的内部类,而我的main方法是static静态的。
就好比静态的方法不能调用动态的方法一样。
有两种解决办法:
第一种:
将内部类Dog定义成静态static的类。
第二种:
将内部类Dog在Main类外边定义。
修改后的代码:
第一种:
| 
 1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 
26 
27 
 | 
public class Main {    public static class Dog     {        private String name;        private int weight;        public Dog(String name, int weight)         {            this.setName(name);            this.weight = weight;        }        public int getWeight()         {            return weight;        }        public void setWeight(int weight)         {this.weight = weight;}        public void setName(String name)        {this.name = name;}        public String getName()         {return name;}    }    public static void main(String[] args)    {        Dog d1 = new Dog("dog1",1);     }} | 
第二种:
| 
 1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 
26 
27 
28 
 | 
public class Main {    public static void main(String[] args)    {        Dog d1 = new Dog("dog1",1);     }}class Dog {        private String name;        private int weight;        public Dog(String name, int weight)         {            this.setName(name);            this.weight = weight;        }        public int getWeight()         {            return weight;        }        public void setWeight(int weight)         {this.weight = weight;}        public void setName(String name)        {this.name = name;}        public String getName()         {return name;}}
  | 
Java编译时出现No enclosing instance of type XXX is accessible.的更多相关文章
- 【转】Java出现No enclosing instance of type E is accessible. Must qualify the allocation with an enclosing
		
最近在看Java,在编译写书上一个例子时,由于书上的代码只有一部分,于是就自己补了一个内部类.结果编译时出现:No enclosing instance of type E is accessible ...
 - Java出现No enclosing instance of type E is accessible. Must qualify the allocation with an enclosing
		
Java出现No enclosing instance of type E is accessible. Must qualify the allocation with an enclosing ...
 - Java出现No enclosing instance of type E is accessible. Must qualify the allocation with an enclosing--转
		
原文:http://blog.csdn.net/sunny2038/article/details/6926079 最近在看Java,在编译写书上一个例子时,由于书上的代码只有一部分,于是就自己补了一 ...
 - No enclosing instance of type test8 is accessible. Must qualify the allocation with an enclosing instance of type test8 (e.g. x.new A() where x is an
		
在编译一个例子时,结果编译时出现: No enclosing instance of type test8 is accessible. Must qualify the allocation wit ...
 - No enclosing instance of type Test is accessible. Must qualify the allocation with an enclosing instance of type Test (e.g. x.new A() where x is an instance of Test).
		
Java编写代码过程中遇到了一个问题,main方法中创建内部类的实例时,编译阶段出现错误,查看错误描述: No enclosing instance of type Test is accessibl ...
 - 【eclipse】No enclosing instance of type A is accessible. Must qualify the allocation with an enclosing instance of type A
		
用 eclipse 写 Java 代码时出现了这个问题,详细如下: No enclosing instance of type TestParsingLinkedList is accessible. ...
 - No enclosing instance of type Outer is accessible. Must qualify the allocation with an enclosing instance of type Outer (e.g. x.new A() where x is an instance of Outer)
		
之前看内部类的时候没发现这个问题,今天写代码的时候遇到,写个最简单的例子: 下面这一段代码 红色的部分就是编译报错: No enclosing instance of type Outer is ac ...
 - No enclosing instance of type Demo is accessible. Must qualify the allocation with an enclosing instance of type Demo (e.g. x.new A() where x is an instance of Demo).
		
No enclosing instance of type Demo is accessible. Must qualify the allocation with an enclosing inst ...
 - No enclosing instance of type test is accessible. Must qualify the allocation with an enclosing inst
		
今日遇到一个报错如下: No enclosing instance of type test is accessible. Must qualify the allocation with an en ...
 
随机推荐
- Codeforces 691B s-palindrome
			
水题. #pragma comment(linker, "/STACK:1024000000,1024000000") #include<cstdio> #includ ...
 - CodeForces 83B Doctor
			
二分查找. #include<cstdio> #include<cstring> #include<cmath> #include<vector> #i ...
 - Android中在布局中写ViewPager无法渲染出来的问题
			
今天刚刚使用Android Studio,在写ViewPager时,首先按F4把Dependencies添加一个V4包,然后写ViewPager,如下: <android.support.v4. ...
 - compileSdkVersion,buildToolsVersion还有targetSdkVersion要一致,从而避免build的时候报错
			
Android Studio里的app的build.gradle文件: android { compileSdkVersion 24 buildToolsVersion "24.0.0&qu ...
 - Android media媒体库分析之:MediaProvider
			
在做Android媒体应用程序时(Audio.Image.Video)需要对Android的媒体提供者(MediaProvider)做详细的分析,下面记录一下我的收获: 一.获取MediaProvid ...
 - Redis hash 类型及操作
			
原文:http://blog.sina.com.cn/s/blog_5f044a4d0102v01k.html Redis hash是一个string类型的field和value的映射表.它的添加.删 ...
 - Android--->Button按钮操作
			
main.xml中设置两个按钮 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xm ...
 - 怎么把一个int数组转化为char型数组??
			
/* 234 Press any key to continue */ #include <stdio.h> int main() { ,n; ]; ; num; ++n) { s[n] ...
 - HDU 1789 Doing Homework again(贪心)
			
在我上一篇说到的,就是这个,贪心的做法,对比一下就能发现,另一个的扣分会累加而且最后一定是把所有的作业都做了,而这个扣分是一次性的,所以应该是舍弃扣分小的,所以结构体排序后,往前选择一个损失最小的方案 ...
 - mysql优化---优化工具MySQL performance tuning primer script
			
MySQL performance tuning primer script一个简单好用的mysql优化工具,其实一个shell脚本 下载: $ wget http://www.day32.com/M ...