泛型的作用在於限制參數類型,讓代碼更嚴謹,以後使用時對參數的調用不會出錯
來直接看看Java內部類泛型的實現
1 // IntelliJ API Decompiler stub source generated from a class file 2 // Implementation of methods is not available 3 4 package java.util; 5 6 public interface Map<K, V> { 7 8 int size(); 9 10 boolean isEmpty();11 12 boolean containsKey(java.lang.Object o);13 14 boolean containsValue(java.lang.Object o);15 16 V get(java.lang.Object o);17 18 V put(K k, V v);19 20 V remove(java.lang.Object o);21 22 void putAll(java.util.Map<? extends K,? extends V> map);23 24 void clear();25 26 java.util.Set<K> keySet();27 28 java.util.Collection<V> values();29 30 java.util.Set<java.util.Map.Entry<K,V>> entrySet();31 32 boolean equals(java.lang.Object o);33 34 int hashCode();35 36 static interface Entry<K, V> {37 38 K getKey();39 40 V getValue();41 42 V setValue(V v);43 44 boolean equals(java.lang.Object o);45 46 int hashCode();47 }48 }
這個是Java中Map介面的實現
注意到Map介面中定義的方法,
1 V put(K k, V v);
他的傳回值類型和參數類型都是K,V,也就是說它沒有限制一個強型別,比如Integer或者String
我們可以根據自己的需要設定泛型是Integer或者String,以此來限制以後傳入和參數類型和對參數方法的調用
我們一般調用的時候會這麼寫
1 Map<String, String> strMap = new HashMap<String, String>();
這裡以後我們對strMap進行put操作時,傳入的類型就只能是String
而從strMap中取得元素,這個取得的元素也是最為String類來操作的
而泛型中的類型也是可以支援繼承的
1 class Sort<E extends Comparable<E>> { /** **/ }