泛型的理解

小德 2021-12-02 12:57:59
Categories: Tags:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class ArrayList<T>{
public void add(T e){
...
}
<T>public void add1(T e){
...
}
<E>public void add2(E e){
...
}
}

ArrayList<T>中一旦T被指定为String后那么add没有前缀<T> 的话,该方法中只能是add (String 对象)

而你要是有前缀<T>或<E>的话,那么你就是告诉编译器对它说:这是我新指定的一个类型,
跟ClassName<T>类对象中的T没有半毛钱的关系。也就是说这个add1中的T和add2中的E是一个效果,也就是你可以把add2理解为<T> void add2(T e){~~~~~}

从上面我说的看,那就是 这个方法返回值前也加个<T>的话,这个T就代表该方法自己独有的某个类,而不去和类中限定的T产生冲突,你直接换成<E>会更容易理解的。

那么<T> ArrayList<T>相当于ArrayList中带有<T>的方法使用新指定的一个类型T