泛型
1.概恋
泛型本质本质是参数化类型,泛型提供了编译时类型的安全检测机制,该机制允许程序在编译时检测非法的类型。
2.泛型标记和泛型限定:E 、T 、K 、V 、N 、?
如下表所示:
序号 | 泛型标记 | 说明 |
---|---|---|
1 | E-Element | 在集合中使用,表示在集合中存放的元素 |
2 | T-Type | 表示Java类,包括基础的类和我们自定义的类 |
3 | K-Key | 表示键,比如Map中的key |
4 | V-Value | 表示值 |
5 | N-Number | 表示数值类型 |
6 | ? | 表示不确定的Java类型 |
类型通配符符使用 “ ?” 表示所有具体的参数类型,例如 List<?> 在逻辑上是 List 、List等所有 List<具体类型实参> 的父类。
在使用泛型的时候,若希望将类的继承关系加入泛型应用中,就需要对泛型做限定,具体的泛型限定有对泛型限定有对泛型上线的限定和对泛型下线的限定。
1.对泛型上限的限定:<? extends T>
在Java中使用通配符 " ? " 和 " extends " 关键字指定泛型的上限,具体用法为 <? extends T> ,它表示该通配符所代表的类型是 T 类的子类或者接口 T 的子接口。
2.对泛型下限的限定:<? super T>
在Java中,使用通配符 “ ?” 和 “ super ” 关键字指定泛型的下限,具体用法为 <? super T>,它表示该通配符所代表的类型是 T 类型的父类或者父接口。
3.泛型的方法
泛型的方法指将方法的参数类型定义为泛型,以便在调用时接收不同的类型的参数。在方法的内部根据传递给泛型方法的不同参数类型执行不同的处理方法。
public static void main(String args){
generalMethod("1" , 2 , new Worker());
}
//定义泛型方法 generalMethod ,printArray
public static <T> void generalMethod(T... inputArray){
for (T element : inputArray){
if (element instanceof Integer){
System.out.println("处理 Integer 类型数据中...");
}else if (element instanceof String){
System.out.println("处理 String 类型数据中...");
}else if (element instanceof Double){
System.out.println("处理 Double 类型数据中...");
}else if (element instanceof Float){
System.out.println("处理 Float 类型数据中...");
}else if (element instanceof Long){
System.out.println("处理 Long 类型数据中...");
}else if (element instanceof Boolean){
System.out.println("处理 Boolean 类型数据中...");
}else if (element instanceof Date){
System.out.println("处理 Date 类型数据中...");
}
else if (element instanceof Wroker){
System.out.println("处理 Wroker 类型数据中...");
}
}
}