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 | publicclassMain {    publicstaticclassDog     {        privateString name;        privateintweight;        publicDog(String name, intweight)         {            this.setName(name);            this.weight = weight;        }        publicintgetWeight()         {            returnweight;        }        publicvoidsetWeight(intweight)         {this.weight = weight;}        publicvoidsetName(String name)        {this.name = name;}        publicString getName()         {returnname;}    }    publicstaticvoidmain(String[] args)    {        Dog d1 = newDog("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 | publicclassMain {    publicstaticvoidmain(String[] args)    {        Dog d1 = newDog("dog1",1);     }}classDog {        privateString name;        privateintweight;        publicDog(String name, intweight)         {            this.setName(name);            this.weight = weight;        }        publicintgetWeight()         {            returnweight;        }        publicvoidsetWeight(intweight)         {this.weight = weight;}        publicvoidsetName(String name)        {this.name = name;}        publicString getName()         {returnname;}}
 | 
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 ... 
