java中的匿名類有一個(gè)倍兒神奇的用法,見下面代碼示例:
1
2
3
4
5
|
package contract; public interface ISay { void sayHello(); } |
上面是一個(gè)簡(jiǎn)單的接口,下面是如何使用:
1
2
3
4
5
6
7
8
9
10
11
|
package jimmy; import contract.ISay; public class Program { public static void main(String[] args) { ISay say = new ISay() { public void sayHello() { System.out.println( "Hello java!" ); } }; } } |
初看上去,就好象在“不提供接口實(shí)現(xiàn)的情況下,直接new了一個(gè)接口實(shí)例”,對(duì)于C#er來說,有一種盡毀三觀的趕腳。
還好這只是假象,觀察bin目錄下的class輸出,會(huì)發(fā)現(xiàn)有一個(gè)類似Program1.class的文件,如果反編譯觀察一下,發(fā)現(xiàn)原來是編譯器自動(dòng)生成一個(gè)類Program1.class的文件,如果反編譯觀察一下,發(fā)現(xiàn)原來是編譯器自動(dòng)生成一個(gè)類Program1:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
package jimmy; import contract.ISay; import java.io.PrintStream; class Program$ 1 implements ISay { public void sayHello() { System.out.println( "Hello java!" ); } } |
如果有些場(chǎng)合,只需要臨時(shí)需要?jiǎng)?chuàng)建一個(gè)接口的實(shí)現(xiàn)類,上面的"技巧"可以用來簡(jiǎn)化代碼.
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
原文鏈接:http://www.cnblogs.com/yjmyzz/p/3448330.html