程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 使用Java范型需要注意的地方

使用Java范型需要注意的地方

編輯:關於JAVA

靜態方法要想范化,需要指定其類型參數

非范化類型中的實例方法要想范化,也需要制定其類型參數。

范化類型中的實力方法可以直接使用其類型本身的類型參數。

范型不是協變的,即List<Integer>不是List<Number>的子類。

不能實例化范型類型的數組,即new List<String>[3] 是不合法的,除非類型參數是一個未綁定的通配符,即new List<?>[3] 是合法的。

構造延遲,在代碼編寫時我們不能通過類型參數來構造一個該類型的實例,原因是我們不知道如何構造,類型參數的實際類型是在運行時確定的。

對於注意5所描述的問題我們有一個解決方法是List<String> list = (List<String>[]) new Object[3];但是如果是運行時建立數組呢,類型信息是運行時確定的,那就換種寫法T[] tarray = (T[]) new Object[3];

上面的數組構造是不被推薦的,最好的方法是將類型信息傳遞到方法中,如method(Class<V> type) { V[] array = (V[])Array.newInstance(type, length); },可以參考ArrayList類的toArray(T[] a)方法的實現。

構造通配符引用,如果set是一個Set<?>類型,則Set<?> set2 = new HashSet<?>(set);是不合法的,改成Set<?> set2 = new HashSet<Object>(set);就合法了。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved