java - 类型的封闭实例不可访问

标签 java

<分区>

我在Eclipse中写了这个Java接口(interface)程序,但是在MyTriangle tmp = new MyTriangle();下面有一条红线,当我运行这个程序时,我得到了这个错误:

No enclosing instance of type Question1 is accessible. Must qualify the allocation with an enclosing instance of type Question1 (e.g. x.new A() where x is an instance of Question1).

 public static void main(String[] args) 
    {   
     MyTriangle tmp = new MyTriangle();
     tmp.getSides();
     System.out.println();
     System.out.println("The area of the triangle is " + tmp.computeArea());
     }

interface Triangle
{
 public void triangle();
 public void iniTriangle(int side1, int side2, int side3);
 public void setSides(int side1, int side2, int side3);
 public void getSides();
 public String typeOfTriangle(); 
 public double computeArea();            
}

 class MyTriangle implements Triangle
 {
  private int side1,side2,side3;
  public  void triangle()
  {
    this.side1 = 3;
    this.side2 = 4;
    this.side3 = 5;
  } 
}

最佳答案

MyTriangle 是一个非静态内部类。这意味着与所有其他实例成员一样,它(及其实例)属于外部类的实例,而不是类本身。记住属于一个类的东西需要被定义为static

因此,您需要提供一个外部类实例来实例化内部类

new OuterClass().new MyTriangle();

如果您将内部类标记为 static 使其成为嵌套,它将允许您在静态上下文中引用它,例如 public static main() 方法。

关于java - 类型的封闭实例不可访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18690770/

相关文章:

java - 设置3个表格的不同单元格宽度

java - 如何在java中为键值对创建JSON数组并在JQuery自动完成中使用它来分离键值

java - 绑定(bind)、粘合代码和包装器库

java - 如何消除错误 : illegal start of type in java?

java - 如何在非组件类中实例化服务类

java - 是否有可能在不递归的情况下得到 StackOverflowError?

java - 如何打印树中大于特定节点的所有节点?

java - 无法使用android.support.v7.widget.Toolbar

java - 测验应用程序 - 循环问题

java - 如何在 restful java api(JAX-RS,Jersey)中使用 mysql db?