我正在获取方法,并检查method.getParameterTypes()[0]
,这是java.util.List
。但我想弄清楚包含类型是什么,例如,如果它是java.util.List<String>
我想要弄清楚它应该包含字符串。
我该怎么做?
谢谢!
答案 0 :(得分:22)
Type listType = method.getGenericParameterTypes()[0];
if (listType instanceof ParameterizedType) {
Type elementType = ((ParameterizedType) listType).getActualTypeArguments()[0];
}
请注意,元素类型不必是Class
的实际String
- 它可以是类型变量,通配类型等。
答案 1 :(得分:3)
这很简单:你做不到。在编译时,Java会删除泛型类型(请参阅Type erasure)。
答案 2 :(得分:0)
我有同样的问题,我做了如下
在这里:您的班级初始化为clazz(例如 - Company.Class)和您的收藏作为
List<Employees> companyEmployee
String collectionType
- 列出
String collectionContent
- 员工
Method[] methodList = clazz.getDeclaredMethods();
Method classMethod = methodList[0];
String[] collection= classMethod.getReturnType().toString().split("\\.");
String collectionType = collection[collection.length - 1]
String collectionContent = classMethod.getGenericReturnType().getTypeName().split("<")[1].split(">")[0]