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错误
答案 0 :(得分:4)
您的Inner
类是非静态的,因此您必须使用YY
实例对其进行实例化。
在你的情况下是Inner inner = ob.new Inner();
请注意:
如果您希望该类公开,您可以将其称为YY.Inner
(但您无法以此方式实例化)
按照惯例,您必须使用大写的类名(Inner
而不是inner
)。也就是说,我认为值得一提的是,通常在Java中(但这并不像大写的类名一样),开头的大括号保持在同一条线上。
答案 1 :(得分:0)
要引用YY
,InnerYY
必须实际位于YY
内(在结束休息之前移动)。然而,你没有静态主函数,这似乎是它的用途。
答案 2 :(得分:0)
您尝试从静态调用YY.inner()创建非静态内部类。所以你需要创建对象yy = new YY()然后调用inner = new yy.inner()。或者使内部类静态。