No enclosing instance of type is accessible

This question already has an answer here:

  • Java inner class and static nested class 23 answers

  • 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.

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

    上一篇: 解释在java中访问内部类的方式?

    下一篇: 不能使用封闭的类型实例