目录

面试回答

知识扩展

代码示例


面试回答

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;
    }

}
08-18 06:25