2014-01-11 86 views
1

我是一些嵌套静态类的测试程序。java中的复杂嵌套类

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第二次。它显示错误“静态修改器不允许在这里”。我有什么问题? 别喊我。我知道这是一种不好的做法,但我有好奇心知道原因。

+2

阅读这样的代码太麻烦了。 –

+1

为什么你会尝试任何可怕的事情? –

+1

这太可怕了@ user3007882。看起来像一个阶梯。你想用这个做什么? –

回答

4

您可以向下简化所有的代码只是:

class C{ 

    static class E{ 
    } 
} 

于是问题就来了,为什么可以在静态内部类不是一个非静态内部类中创建。

这是在这里找到答案:

Why a non-static inner-class cannot have static members (fields and methods)?

非静态内部类的整个身体是不是一个静态的范围之内,因此,你不能有静态成员在那里。

1
class C{ 

     class D{ 

      class F{ 

      } 
     } 

     static class E{ 
    } 
} 

如果你看看上面的嵌套的内部类仔细看,你正试图把一个非静态内部类,这是不是在java中允许的范围内静态嵌套类。