JAVA泛型类的初始化问题
论文问答
1
有以下类定义:
public class Test> {
public Test(){
System.out.println("success");
}
}
请问各位如何创建实例? PS: Test> test=new Test>(); 是不行的 。
-
/* package whatever; // don't place package name! */ import java.util.*; import java.lang.*; import java.io.*; class Test<U,V extends Test<U,V>> { public Test(){ System.out.println("success"); } } class A extends Test<String, A> { } /* Name of the class has to be "Main" only if the class is public. */ class Ideone { public static void main (String[] args) throws java.lang.Exception { // your code goes here Test<String, A> t = new Test<String, A>(); } }
-
java中没法得到泛型参数化类型,因为在编译期没法确定泛型参数化类型,也就找不到对应的类字节码文件,自然就不行了 。 泛型反射的关键是获取ParameterizedType,再调用它的getActualTypeArguments()方法获得实际绑定的类型。但注意public class BookManager是不能被反射的,因为擦拭法的缘故。只有在Superclass 或者成员变量(Field.getGenericType())等有函数返回ParameterizedType的时候才能成功反射 。
发表回复