知乎昭言說(shuō)
根據(jù)Oracle官方的說(shuō)法:
Nested classes are divided into two categories: static and non-static. Nested classes that are declared static are called static nested classes. Non-static nested classes are called inner classes.
從字面上看芒帕,一個(gè)被稱為靜態(tài)嵌套類玷禽,一個(gè)被稱為內(nèi)部類。從字面的角度解釋是這樣的:什么是嵌套乌询?嵌套就是我跟你沒(méi)關(guān)系榜贴,自己可以完全獨(dú)立存在,但是我就想借你的殼用一下妹田,來(lái)隱藏一下我自己(真TM猥瑣)唬党。什么是內(nèi)部??jī)?nèi)部就是我是你的一部分鬼佣,我了解你驶拱,我知道你的全部,沒(méi)有你就沒(méi)有我晶衷。(所以內(nèi)部類對(duì)象是以外部類對(duì)象存在為前提的)至于具體的使用場(chǎng)景蓝纲,我就不當(dāng)翻譯工了,有興趣的直接去官網(wǎng)看吧晌纫。
知乎鐵心男說(shuō)
靜態(tài)內(nèi)部類就是個(gè)獨(dú)立的類税迷。之所以要弄這么個(gè)東西,只是起到一個(gè)注釋的效果锹漱,而且這個(gè)注釋可靜態(tài)檢查箭养。比如有A,B兩個(gè)類哥牍,B有點(diǎn)特殊毕泌,雖然可以獨(dú)立存在喝检,但只被A使用。這時(shí)候怎么辦撼泛?如果把B并入A里蛇耀,復(fù)雜度提高,搞得A違反單一職責(zé)坎弯。如果B獨(dú)立,又可能被其他類(比如同一個(gè)包下的C)依賴译暂,不符合設(shè)計(jì)的本意抠忘。所以不如將其變成A.B,等于添加個(gè)注釋外永,告訴其他類別使用B了崎脉,它只跟A玩。非靜態(tài)的才是真正的內(nèi)部類伯顶,對(duì)其外部類有個(gè)引用囚灼。