嗨我在學習Java內部類時嘗試了下面的代碼。令人驚訝的是它通過了編譯,但在運行時無法工作。我的理解是針對內部類,它必須在頂級類的實例中實例化。爲什麼Java允許使用內部類的這種奇怪的代碼通過編譯?
但是爲什麼JDK編譯器允許這樣的代碼通過編譯?我使用JDK 6
public class Hello
{
public Hello()
{
System.out.println("Simple Hello!");
}
public void test()
{
Test.test();
}
protected int i = 0;
static class B
{
public B()
{
System.out.println("B Hello!");
}
static class C
{
public C()
{
System.out.println("C Hello!");
}
}
}
}
class Test
{
static void test()
{
C c = new C();
}
}
這可能有助於http://download.oracle.com/javase/tutorial/java/javaOO/nested.html –
它不編譯 – OscarRyz
它編譯如果你這樣做:Hello.BC c = new Hello.BC( ); –