内部类对象出错

import java.io.*; class YY { int a=0; void putValue(int m) { a=m; inner x=new inner(); x.display(); } class inner { void display() { System.out.println("value of a:"+a); } } } class InnerYY { public static void main(String args[]) { YY ob=new YY(); ob.putValue(90); YY.inner i = new YY.inner(); i.display(); } } 

在运行此程序时,我收到以下错误…

InnerYY.java:27:包含YY.inner的封闭实例是必需的YY.inner i = new YY.inner(); ^ 1错误

您的Inner类是非静态的,因此您必须使用YY实例对其进行实例化。

在你的情况下是Inner inner = ob.new Inner();

注意:

  • 如果你希望该类是公共的,你可以将它称为YY.Inner (但你不能以那种方式实例化它)

  • 按照惯例,您必须使用大写的类名( Inner而不是inner )。 也就是说,我认为值得一提的是,通常在Java中(但这并不像大写的类名一样),开头的大括号保持在同一条线上。

要引用YYInnerYY必须实际上在YY (在结束rest之前移动)。 然而,你没有一个静态主函数,它似乎是它的用途。

您尝试从静态调用YY.inner()创建非静态内部类。 所以你需要创建对象yy = new YY()然后调用inner = new yy.inner()。 或者使内部类静态。