java - 没有封闭的类型实例是可访问的

标签 java

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





Java inner class and static nested class

(28 个回答)


8年前关闭。




我在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)静态 main()方法。

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

相关文章:

java - 澄清 regrading 字符串连接和加法?

java - StyledText 可见行数

java - 将 SQL 查询转换为等效的 Hibernate Criteria

java - 将哈希表上的字符数组转换为整数

java - State 对象中的映射在所有节点上都相同吗?

java - 在 Java 游戏循环中使用 "SwingUtilities.invokeLater()"是一种不好的做法吗?

java - 为什么 JDK 的 JConsole 会同时使用 jvmstat 和 attach api 寻找虚拟机?

java - 字符串的子字符串部分

java - 未重新绘制的图

java - 使用命令: ">" and "<" to read/write file