泛型和反射
约 174 字小于 1 分钟
2024-08-08
Java 的部分反射 API 也是泛型。例如:Class<T> 就是泛型
// compile warning:
Class clazz = String.class;
String str = (String) clazz.newInstance();
// no warning:
Class<String> clazz = String.class;
String str = clazz.newInstance();调用 Class 的 getSuperclass() 方法返回的 Class 类型是 Class<? super T>
Class<? super String> sup = String.class.getSuperclass();构造方法 Constructor<T> 也是泛型
Class<Integer> clazz = Integer.class;
Constructor<Integer> cons = clazz.getConstructor(int.class);
Integer i = cons.newInstance(123);我们可以声明带泛型的数组,但不能用 new 操作符创建带泛型的数组
Animal<String>[] ps = null; // ok
Animal<String>[] ps = new Animal<String>[2]; // compile error!必须通过强制转型实现带泛型的数组
@SuppressWarnings("unchecked")
Animal<String>[] ps = (Animal<String>[]) new Animal[2];