No enclosing instance of type is accessible
This question already has an answer here:
Try this. Removed the methods for simplicity
public class Test1 {
public static void main( String [] args)
{
MyTriangle h1 = new MyTriangle();
}
}
class MyTriangle implements Triangle{
int side1;
int side2;
int side3;
public MyTriangle(){
this.side1 = 1;
this.side2 = 2;
this.side3 = 3;
}
}
interface Triangle{}
You have not pasted your full code, I assume your code should look something like below.
Then you should create the Instance for your main class before creating instance for your triangle as shown below
public class Test{
class MyTriangle
{
int side1,side2,side3;
public MyTriangle()
{
this.side1 = 3;
this.side2 = 4;
this.side3 = 5;
}
}
public static void main(String[] args)
{
MyTriangle h1 = new Test(). new MyTriangle(); // Fix is here**
}
}
interface Triangle{}
MyTriangle
is a non-static inner class. That means like all other instance members it (& it's instance) belongs to an instance of the outer class as opposed to the class itself. Remember to belong to a class things need to be defined as static
.
Hence, you need to provide an outer class instance to instantiate the inner one as
new OuterClass().new MyTriangle();
If you mark the inner class static
which makes it nested it would allow you to refer to it in a static context like a public static main()
method.
上一篇: 解释在java中访问内部类的方式?
下一篇: 不能使用封闭的类型实例