大型电子商务网站建设公司,上海地区做旧物回收的网站,asp net做购物网站,站长统计幸福宝2022年排行榜Java 泛型#xff08;generics#xff09;是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制#xff0c;该机制允许程序员在编译时检测到非法的类型。泛型的本质是参数化类型#xff0c;也就是说所操作的数据类型被指定为一个参数。
Java 的泛型是伪泛型generics是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制该机制允许程序员在编译时检测到非法的类型。泛型的本质是参数化类型也就是说所操作的数据类型被指定为一个参数。
Java 的泛型是伪泛型这是因为 Java 在编译期间所有的泛型信息都会被擦掉这也就是通常所说类型擦除 。 更多关于类型擦除的问题可以查看这篇文章《Java 泛型类型擦除以及类型擦除带来的问题》 。
ListInteger list new ArrayList();list.add(12);
//这里直接添加会报错
list.add(a);
Class? extends List clazz list.getClass();
Method add clazz.getDeclaredMethod(add, Object.class);
//但是通过反射添加是可以的
add.invoke(list, kl);System.out.println(list)泛型一般有三种使用方式:泛型类、泛型接口、泛型方法。 1.泛型类
//此处T可以随便写为任意标识常见的如T、E、K、V等形式的参数常用于表示泛型
//在实例化泛型类时必须指定T的具体类型
public class GenericT{private T key;public Generic(T key) {this.key key;}public T getKey(){return key;}
}如何实例化泛型类
GenericInteger genericInteger new GenericInteger(123456);public interface GeneratorT {public T method();
}实现泛型接口不指定类型
class GeneratorImplT implements GeneratorT{Overridepublic T method() {return null;}
}实现泛型接口指定类型
class GeneratorImplT implements GeneratorString{Overridepublic String method() {return hello;}
}3.泛型方法 public static E void printArray( E[] inputArray ){for ( E element : inputArray ){System.out.printf( %s , element );}System.out.println();}使用
// 创建不同类型数组 Integer, Double 和 Character
Integer[] intArray { 1, 2, 3 };
String[] stringArray { Hello, World };
printArray( intArray );
printArray( stringArray );常用的通配符为 TEKV 表示不确定的 java 类型T (type) 表示具体的一个 java 类型K V (key value) 分别代表 java 键值中的 Key ValueE (element) 代表 Element
更多关于 Java 泛型中的通配符可以查看这篇文章《聊一聊-JAVA 泛型中的通配符 TEKV》
更多内容请关注我的专栏