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