泛型中K T V E ? Object等分别代表什么含义。
E – Element (在集合中使用,因为集合中存放的是元素) T – Type(Java 类) K – Key(键) V – Value(值) N – Number(数值类型) ? – 表示不确定的java类型(无限制通配符类型) S、U、V – 这几个有时候也有,这些字母本身没有特定的含义,它们只是代表某种未指定的类型。一般认为和T差不多。 Object – 是所有类的根类,任何类的对象都可以设置给该Object引用变量,使用的时候可能需要类型强制转换,但是用使用了泛型T、E等这些标识符后,在实际用之前类型就已经确定了,不需要再进行类型强制转换。 扩展知识 代码示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 // 示例1:使用T作为泛型类型参数,表示任何类型 public class MyGenericClass<T> { private T myField; public MyGenericClass(T myField) { this.myField = myField; } public T getMyField() { return myField; } } // 示例2:使用K、V作为泛型类型参数,表示键值对中的键和值的类型 public class MyMap<K, V> { private List<Entry<K, V>> entries; public MyMap() { entries = new ArrayList<>(); } public void put(K key, V value) { Entry<K, V> entry = new Entry<>(key, value); entries.add(entry); } public V get(K key) { for (Entry<K, V> entry : entries) { if (entry.getKey().equals(key)) { return entry.getValue(); } } return null; } private class Entry<K, V> { private K key; private V value; public Entry(K key, V value) { this.key = key; this.value = value; } public K getKey() { return key; } public V getValue() { return value; } } } // 示例3:使用E作为泛型类型参数,表示集合中的元素类型 public class MyList<E> { private List<E> elements; public MyList() { elements = new ArrayList<>(); } public void add(E element) { elements.add(element); } public E get(int index) { return elements.get(index); } } // 示例4:使用Object作为泛型类型参数,表示可以接受任何类型 public class MyGenericClass { private Object myField; public MyGenericClass(Object myField) { this.myField = myField; } public Object getMyField() { return myField; } }