不能使用封闭的类型实例

这个问题在这里已经有了答案:

  • Java内部类和静态嵌套类23答案

  • 尝试这个。 删除了简单的方法

    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()方法。

    链接地址: http://www.djcxy.com/p/92005.html

    上一篇: No enclosing instance of type is accessible

    下一篇: Why design ThreadLocalMap as static nest class in ThreadLocal?