目录
面试回答
E - Element(在集合中使用,因为集合中存放的是元素)
T - Type(Java 类)
K - Key(键)
V - Value(值)
N - Number(数值类型)
?- 表示不确定的 java 类型(无限制通配符类型)
S、U、V - 2nd、3rd、4th types
Object - 是所有类的根类,任何类的对象都可以设置给该 Object 引用变量,使用的时候可能需要类型强制转换,但是用使用了泛型 T、E 等这些标识符后,在实际用之前类型就已经确定了,不需要进行类型强制转换。
知识扩展
代码示例
// 示例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 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 e){
elements.add(e);
}
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;
}
}