java 中使用匿名類直接new接口詳解及實例代碼
java:使用匿名類直接new接口
java中的匿名類有一個倍兒神奇的用法,見下面代碼示例:
package contract;
public interface ISay {
void sayHello();
}
上面是一個簡單的接口,下面是如何使用:
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!");
}
};
}
}
初看上去,就好象在“不提供接口實現(xiàn)的情況下,直接new了一個接口實例”,對于C#er來說,有一種盡毀三觀的趕腳。
還好這只是假象,觀察bin目錄下的class輸出,會發(fā)現(xiàn)有一個類似Program1.class的文件,如果反編譯觀察一下,發(fā)現(xiàn)原來是編譯器自動生成一個類Program1.class的文件,如果反編譯觀察一下,發(fā)現(xiàn)原來是編譯器自動生成一個類Program1:
package jimmy;
import contract.ISay;
import java.io.PrintStream;
class Program$1
implements ISay
{
public void sayHello()
{
System.out.println("Hello java!");
}
}
如果有些場合,只需要臨時需要創(chuàng)建一個接口的實現(xiàn)類,上面的"技巧"可以用來簡化代碼.
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
相關(guān)文章
使用 Redis 緩存實現(xiàn)點贊和取消點贊的示例代碼
這篇文章主要介紹了使用 Redis 緩存實現(xiàn)點贊和取消點贊的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-03-03
springboot多項目結(jié)構(gòu)實現(xiàn)
本文主要介紹了springboot多項目結(jié)構(gòu)實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-01-01

