最近在看單例模式的實(shí)現(xiàn),看到有一種利用JAVA靜態(tài)內(nèi)部類的特性來(lái)實(shí)現(xiàn),對(duì)于內(nèi)部類我還真是不了解,遂了解了一下,代碼貼上。
/** * 內(nèi)部類分為:成員內(nèi)部類、局部?jī)?nèi)部類、匿名內(nèi)部類和靜態(tài)內(nèi)部類。 */public class Demo { /* * 1.成員內(nèi)部類:成員內(nèi)部類是最普通的內(nèi)部類, * 它的定義為位于另一個(gè)類的內(nèi)部。 */ class Inside1 { public void say() { System.out.println("Inside1 say..."); } } /* * 2.局部?jī)?nèi)部類:局部?jī)?nèi)部類是定義在一個(gè)方法或者一個(gè)作用域里面的類, * 它和成員內(nèi)部類的區(qū)別在于局部?jī)?nèi)部類的訪問(wèn)僅限于方法內(nèi)或者該作用域內(nèi)。 * 局部?jī)?nèi)部類就像局部變量一樣,是不能有public、protected、private以及static修飾符的。 */ public Demo fun1() { class Woman extends Demo{ int age = 0; } return new Woman(); } /* * 3.匿名內(nèi)部類:匿名內(nèi)部類在編譯的時(shí)候由系統(tǒng)自動(dòng)起名為Outter$1.class。 * 一般來(lái)說(shuō),匿名內(nèi)部類用于繼承其他類或是實(shí)現(xiàn)接口,并不需要增加額外的方法,只是對(duì)繼承方法的實(shí)現(xiàn)或是重寫 */ public void fun2(){ new JFrame().addKeyListener(new KeyListener() { public void keyTyped(KeyEvent e) {} public void keyReleased(KeyEvent e) {} public void keyPressed(KeyEvent e) {} &n