網站首頁 學習教育 IT科技 金融知識 旅遊規劃 生活小知識 家鄉美食 養生小知識 健身運動 美容百科 遊戲知識 綜合知識
當前位置:趣知科普吧 > IT科技 > 

generic|java

欄目: IT科技 / 發佈於: / 人氣:2.1W

<link rel="stylesheet" href="https://js.how234.com/third-party/SyntaxHighlighter/shCoreDefault.css" type="text/css" /><script type="text/javascript" src="https://js.how234.com/third-party/SyntaxHighlighter/shCore.js"></script><script type="text/javascript"> SyntaxHighlighter.all(); </script>

很多朋友都想知道java generic是什麼?下面就一起來了解一下吧~

java generic(泛型):一般類型,也可以爲任何類型,泛型的本質是“參數化類型”,即所操作的數據類型被指定爲一個參數,泛型是在JDK1.5中引入的特性。

java generic

泛型提供了編譯時類型安全檢測機制,該機制允許程序員在編譯時檢測到非法的類型,而不是在執行時纔出現錯誤。在實際編程中,會出現很多這樣的情況:同樣的方法,只是數據類型不同。現在如果想申明一個Box類,可以存放所有基本數據類型包裝類的對象,可以有以下寫法:

public class Box {    private Integer object1;    public void set(Integer object1) { this.object1 = object1; }    public Integer get() { return object1; }    private Double object2;    public void set(Double object2) { this.object2 = object2; }    public Double get() { return object2; }}

這樣編程,會出現大量的冗餘代碼,大家都知道Java中的所有類都繼承於Object類,根據“裏式替換原則”,可以寫成這樣:

public class Box {    private Object object;    public void set(Object object) { this.object = object; }    public Object get() { return object; }}

既然申明瞭Object類型,意味着除了8個原始數據類型,還可以傳遞其他任意類型。如果set了一個Integer對象,get用作String類型,程序在執行時會報錯,但是卻能透過編譯的類型檢查,將上面的Box類改用泛型來實現就可以很好的解決這個問題。

/** * Generic version of the Box class. * @param <T> the type of the value being boxed */public class Box<T> {    // T stands for "Type"    private T t;    public void set(T t) { this.t = t; }    public T get() { return t; }}public static void main(String[] args) {    Box<Integer> integerBox = new Box<Integer>();    Box<String> stringBox = new Box<String>();    integerBox.add(new Integer(10));    stringBox.add(new String("泛型測試"));    System.out.printf("整型值爲 :%d", integerBox.get());    System.out.printf("字元串爲 :%s", stringBox.get());

}使用泛型有的好處:編譯時強類型檢查、無需手動進行類型轉換、可以實現複用,編寫通用算法。

Tags:generic java