您好,欢迎访问一九零五行业门户网

Java编译时出现 No enclosing instance of type Main is accessi

今天在编译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). 我原来编写的源代码是这样的: publ
今天在编译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类外边定义。
修改后的代码:
第一种:
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); }}
第二种:
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;}}
其它类似信息

推荐信息