How many times can classes be nested within a class?

前端 未结 6 1333
时光说笑
时光说笑 2020-12-31 13:49

I came across this questions on one of the online Java Tests. The options were 4,5,8 and any number of times.

I have only used one inner class, but have never tried

6条回答
  •  陌清茗
    陌清茗 (楼主)
    2020-12-31 14:14

    As a follow-up to Mark's trial on windows - a bit silly but fun nonetheless - I did a trial on AIX 5.3.

    91 subclasses deep is ok, number 92 results in the following error:

    -rw-r--r--   1 root     system        12813 Nov 24 15:15 A.class
    Main class=class A
    
    count=90 class=A$B$C$D$E$F$G$H$I$J$K$L$M$N$O$P$Q$R$S$T$U$V$W$X$Y$Z$AA$AB$AC$AD$AE$AF$AG$AH$AI$AJ$AK$AL$AM$AN$AO$AP$AQ$AR$AS$AT$AU$AV$AW$AX$AY$AZ$BA$BB$BC$BD$BE$BF$BG$BH$BI$BJ$BK$BL$BM$BN$BO$BP$BQ$BR$BS$BT$BU$BV$BW$BX$BY$BZ$CA$CB$CC$CD$CE$CF$CG$CH$CI$CJ$CK$CL$CM
    
    -rw-r--r--   1 root     system        13081 Nov 24 15:16 A.class
    Main class=class A
    
    count=91 class=A$B$C$D$E$F$G$H$I$J$K$L$M$N$O$P$Q$R$S$T$U$V$W$X$Y$Z$AA$AB$AC$AD$AE$AF$AG$AH$AI$AJ$AK$AL$AM$AN$AO$AP$AQ$AR$AS$AT$AU$AV$AW$AX$AY$AZ$BA$BB$BC$BD$BE$BF$BG$BH$BI$BJ$BK$BL$BM$BN$BO$BP$BQ$BR$BS$BT$BU$BV$BW$BX$BY$BZ$CA$CB$CC$CD$CE$CF$CG$CH$CI$CJ$CK$CL$CM$CN
    
    A.java:93: error while writing A.B.C.D.E.F.G.H.I.J.K.L.M.N.O.P.Q.R.S.T.U.V.W.X.Y.Z.AA.AB.AC.AD.AE.AF.AG.AH.AI.AJ.AK.AL.AM.AN.AO.AP.AQ.AR.AS.AT.AU.AV.AW.AX.AY.AZ.BA.BB.BC.BD.BE.BF.BG.BH.BI.BJ.BK.BL.BM.BN.BO.BP.BQ.BR.BS.BT.BU.BV.BW.BX.BY.BZ.CA.CB.CC.CD.CE.CF.CG.CH.CI.CJ.CK.CL.CM.CN.CO: A$B$C$D$E$F$G$H$I$J$K$L$M$N$O$P$Q$R$S$T$U$V$W$X$Y$Z$AA$AB$AC$AD$AE$AF$AG$AH$AI$AJ$AK$AL$AM$AN$AO$AP$AQ$AR$AS$AT$AU$AV$AW$AX$AY$AZ$BA$BB$BC$BD$BE$BF$BG$BH$BI$BJ$BK$BL$BM$BN$BO$BP$BQ$BR$BS$BT$BU$BV$BW$BX$BY$BZ$CA$CB$CC$CD$CE$CF$CG$CH$CI$CJ$CK$CL$CM$CN$CO.class (A file or path name is too long.)
    static class CO {
           ^
    1 error
    

    The generated Java source looks like:

    class A {
      static class B {
        void run() { 
          System.out.println("count=" + 2 + " class=" + B.class.getName() + "\n"); 
        }
      }
    
      public static void main(String[] a){
        System.out.println("Main class=" + A.class + "\n");
        (new A.B()).run();
      }
    }
    

提交回复
热议问题