引言
泛型的概念:
参数化类型
- 适用于多种数据类型执行相同的代码
- 泛型中的类型在使用时指定
- 泛型归根到底就是“模版”
示例
- 在类中若没有声明此类型,在方法使用需要事先声明,声明位置在修饰符与返回类型之间如:
public static <T> void printArray(T[] array){ }
- 数组元素逐个输出
public static <T> void printArray(T[] array) {
for (T element : array) {
System.out.println(element);
}
}
- 泛型方法的使用
<String>gMethod1.method1("str");
- 多个泛型声明时使用逗号隔开如:
public static <T1,T2> void printArray(T1[] array1,T2 array2){ }
- 泛型接口
public interface TempInterface<T1, T2> {
void setData(T1 data);
T2 getData();
}
// 接口实现
public class test implements TempInterface<Integer, String> {
@Override
public void setData(Integer data) {
}
@Override
public String getData() {
return null;
}
}
-
返回值也可以为泛型
-
限定泛型的范围
// extends 的使用,限定泛型的范围,等于或者是extends的子类;只有extends,没有super,通配符才有extends和super
class G2<T extends Number> {
T content;
}
通配符(?)
<?>只能用于获取时使用,并且会丢失数据类型,返回的是Object。set数据是不管用的