2014-01-11 134 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中允許的範圍內靜態嵌套類。