【发布时间】:2015-11-21 12:00:29
【问题描述】:
public class NestedClassTest {
public static void main(String[] args){
OuterClass.NestedClass nestedObject = new OuterClass.NestedClass();
nestedObject.printX();
OuterClass outerObject = new OuterClass();
//OuterClass.InnerClass innerObject = new outerObject.InnerClass(); //Error!
OuterClass.InnerClass innerObject = outerObject.new InnerClass();
innerObject.printY();
//OuterClass.NestedClass objectOfNested2 = outerObject.new NestedClass(); //Error!
}
}
class OuterClass{
static int x = 10;
int y = 100;
static class NestedClass{
void printX(){
System.out.println(x);
}
}
class InnerClass{
void printY(){
System.out.println(y);
}
}
}
我在处理嵌套类和内部类。困难的部分是当我尝试使用关键字new 启动内部类时。
我预计 new outerObject.InnerClass() 会像
new OuterClass.NestedClass() 做到了。它没有用,但只有outerObject.new InnerClass() 有效。对我来说,关键字new 出现在一个变量之后(在我的例子中是outerObject)看起来非常诡异和混乱。为什么会这样?这背后的逻辑是什么?
此外,outerObject.new NestedClass() 不起作用,这对我来说意味着更多的谜团。
请有人帮我详细了解关键字new 的工作原理。
【问题讨论】: