我正在使用许多嵌套静态类测试程序。
public class Q
{
static class A {
static class B{
static class C{
static class D{
static class E{
}
}
}
}
}
class C{
class D{
class F{
}
}
static class E{
}
}
}
但是在这里我不能再次声明静态类E.它显示错误“静态修饰符不允许在这里”。我怎么了? 不要喊我。我知道这是一个不好的做法。但我有好奇心知道原因。
答案 0 :(得分:4)
您可以将所有代码简化为:
class C{
static class E{
}
}
所以问题就变成为什么不能在非静态内部类中创建静态内部类。
这在这里得到解答:
Why a non-static inner-class cannot have static members (fields and methods)?
非静态内部类的整个主体不在静态范围内,因此您不能拥有静态成员。
答案 1 :(得分:1)
class C{
class D{
class F{
}
}
static class E{
}
}
如果仔细查看上面的嵌套内部类,就会尝试将静态嵌套类放在非静态内部类中,这在java中是不允许的。