JAVA中的泛型

泛型的作用在于限制参数类型,让代码更严谨,以后使用时对参数的调用不会出错

来直接看看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>> { /** **/ }

你可能感兴趣的:(java)