不能使用封闭的类型实例
这个问题在这里已经有了答案:
尝试这个。 删除了简单的方法
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{}
你没有粘贴你的完整代码,我假设你的代码应该如下所示。
然后,您应该在为您的三角形创建实例之前为您的主类创建实例,如下所示
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
是一个非静态的内部类。 这意味着像所有其他实例成员(它是实例)属于外部类的实例,而不是类本身。 记住属于某个类的东西需要被定义为static
。
因此,你需要提供一个外部类实例来实例化内部类
new OuterClass().new MyTriangle();
如果你标记内部类的static
使它嵌套,它将允许你在静态环境中引用它,如公共静态main()
方法。
上一篇: No enclosing instance of type is accessible
下一篇: Why design ThreadLocalMap as static nest class in ThreadLocal?