我是内部类的新手,这可能是一个非常愚蠢的问题,但我读到“没有外部类的实例就无法创建内部类的实例”但是当我试图创建一个非静态内部的对象时class使用它作为我的外部类的实例成员。
我知道它是通过引用我的外部类对象创建一个内部对象,但这是正确的方法吗?
以下是我的代码段:
public class TestInner {
private Nonstatic non = null;
private static int access = 4;
public class Nonstatic
{
void hello(){
access = 90;
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
TestInner outer = new TestInner();
TestInner.Nonstatic innern= outer.new Nonstatic();
System.out.println("Non static obj1 is "+innern);
outer.testinnerObj();
}
public void testinnerObj()
{
non = new Nonstatic();
System.out.println("Non static obj2 is "+non);
non.hello();
}
}
答案 0 :(得分:2)
您正在编写“如果没有外部类的实例,则无法创建Inner类的实例”。而这正是你在做的事情。
首先,创建“外部”类的实例:
TestInner outer = new TestInner();
然后,您创建一个“内部”类的实例 - 它只存在
在外部范围内:
TestInner.Nonstatic innern= outer.new Nonstatic();
所以,问题可能归结为:是的,你是在静态main方法中创建对象。但这并不重要,因为您使用的语法outer.new
在外部范围内创建它。
希望有所帮助。