【发布时间】:2021-09-21 19:56:32
【问题描述】:
这里我需要创建一个java.util.List
演示课
class Demo {
public List<User> allUser() {
// some stuff
}
}
在另一个班级
Method method = null;
try {
Class cls= Class.forName("Demo"); // fully qualified Name here for sure
Method[] methods = cls.getMethods();
for (Method _method:methods) {
if(_method.getName().equals("allUser")) {
method = _method;
break;
}
}
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(method != null) {
java.lang.reflect.Type genericReturnType = method.getGenericReturnType();
}
这里我需要创建一个java.util.List
我试过了
Class clazz = Class.forName(genericReturnType.getTypeName());
这会返回java.lang.ClassNotFoundException
我想创建 java.util.List
问题是allUser 方法可以是任何东西,方法的返回类型可以是任何东西
直到 Method genericReturnType 看起来还不错。我需要在 genericReturnType 的帮助下创建一个对象。
注意:请考虑代码中没有任何语法错误。
让我简化一下。
// I want to achive this
String clsName = "java.util.List<com.entity.User>"; // consider fully qualified name
Class cls = Class.forName(clsName); // from here I got error java.lang.ClassNotFoundException
Object clsInstance = (Object) cls.newInstance();
如果有用户列表,我想用com.entity.User 做一些处理,(那里可能有任何类型的列表而不是用户)所以我还需要识别列表的通用类型强>。
提前致谢。
【问题讨论】:
-
我不明白背后的动机。由于类型擦除,此信息在运行时无论如何都不应该相关。
-
通过识别 List 的泛型类型我想通过反射检查当前类中是否存在的一些属性。根据属性的存在与否,有不同的操作。
标签: java methods reflection