
00:00:00
外卖卷:非常划算 扫码领劵 省点小钱钱
泛型在 Java 中有很重要的地位,在面向对象编程及各种设计模式中有非常广泛的应用。
泛型是一种“代码模板”,可以用一套代码套用各种类型。

泛型的作用:
使用泛型的优势有:
泛型的标识是在一对尖括号“<>”中包含类型形参,其中的类型形参可以有一个或多个,如:<T>、<T, U>、<K, V>。从语法上来说,类型形参可以是任意字符。但是从开发规范的角度来讲,一般都是采用简短的大写字母来表示:
E 表示集合元素;K 和 V 分别表示键和值;T 可以表示任意类型,如果有多个任意类型时,可以使用和 T 相邻的字母,如:U、S。使用细节:
// 错误示范
// ArrayList<int> list = new ArrayList<>();
// 错误示范
// ArrayList<Object> arrayList = new ArrayList<String>();使用细节:
class Test<K, V> {
private K key;
private V value;
public Test(K key, V value) {
this.key = key;
this.value = value;
}
public K getKey() {
return key;
}
public void setKey(K key) {
this.key = key;
}
public V getValue() {
return value;
}
public void setValue(V value) {
this.value = value;
}
}使用细节:
interface Test<K, V> {
V get(K key);
V put(K key, V value);
}使用细节:
public class Main {
public static void main(String[] args) {
getObject("abc", 123);
}
public static <K, V> void getObject(K key, V value) {
System.out.println(key.getClass());
System.out.println(value.getClass());
}
}泛型的表达能力是非常强的,在某些场景下,如果需要限定一个类型范围,而不是某个具体类型的时候,就需要使用类型限定符或类型通配符。
类型限定符可以归结为下面几种类型:
<?>,表示无限制通配符。
<? extends Type>,表示限定的类型只能是 Type 本身或它的子类,限定了泛型的上限。
<? super Type>,表示限定的类型只能是 Type 本身或它的父类,限定了泛型的下限。
评论