您好,我在学习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();
}
}
答案 0 :(得分:2)
这是我得到的:
$ javac -version
javac 1.6.0_26
$ javac Hello.java
Hello.java:31: cannot find symbol
symbol : class C
location: class Test
C c = new C();
^
Hello.java:31: cannot find symbol
symbol : class C
location: class Test
C c = new C();
^
2 errors
您是否100%确定能够编译该代码?