java如何获取泛型类型的类?
如何创建表示泛型对象的Class
List<String> list = new List<String>();
Class c1 = list.class;
Class c2 = Class.forName(???); // <- how?
assert c1 == c2;
你可以在下面搜索框中键入要查询的问题!
如何创建表示泛型对象的Class
List<String> list = new List<String>();
Class c1 = list.class;
Class c2 = Class.forName(???); // <- how?
assert c1 == c2;
# 1 楼答案
这对我很有用:
(Class<List<MYTYPE>>) Class.forName("java.util.ArrayList")
因此,对于您的情况:
# 2 楼答案
类对象不是特定于满足其类型参数的特定类:
它是完全相同的对象,不管它是如何键入的
# 3 楼答案
由于type erasure的原因,在运行时不存在泛型信息,因此您不能这样做
您的代码可以这样编写:
# 4 楼答案
Class
不表示一般类型。合适的类型是java.lang.reflect.Type
,尤其是ParameterizedType
。你可以通过反射得到这些物体,也可以自己制作(请注意,泛型是一种静态类型功能,因此并不真正适用于运行时对象。静态类型信息碰巧保存在类文件中,并通过反射对象上的反射API公开。)