List<String> list = new ArrayList<String>();
如何根据反射 通过list 获取该List中泛型的类型。
11 个解决方案
#3
这个问题和我的问题还是有区别的 。
这个问题是获取集合里面元素的类型。
我现在的问题是这样的:
public void test01(List list){
// 打印List中泛型的类型
}
比如
List<String> list01 = new ArrayList<String>();
test01(list01);
应该打印String 类型
List<Integer> list02 = new ArrayList<Integer>();
test01(list02);
应该打印Integer类型
#4
你可以自己判断下类型。
#5
我现在没办法获取它是什么类型的。
#6
不用发射,这样判断就可以了。
List list = new ArrayList();
list.add("test");
list.add(1);
for (Object object :list) {
if (object instanceof String) {
System.out.println("String");
}else if (object instanceof Integer) {
System.out.println("Integer");
}
}
#7
public class GenericTest
{
public List<String> list = new LinkedList<String>();
public static void main(String[] args) throws SecurityException, NoSuchFieldException
{
ParameterizedType pt = (ParameterizedType) GenericTest.class.getField(
"list").getGenericType();
System.out.println(pt.getActualTypeArguments().length);
System.out.println(pt.getActualTypeArguments()[0]);
}
}
#8
这个list只能是成员变量或方法变量中才能获得他的泛型。
#9
是的!
#10
这个好办,真实运气了楼主你,最近我就研究这个东西
首先导入这个qdox-1.12.jar(你百度一下就搞定了)
然后这样: field.getType().getGenericValue() 就搞定了(看到结果你就知道怎么办了,不再解释)
首先导入这个qdox-1.12.jar(你百度一下就搞定了)
然后这样: field.getType().getGenericValue() 就搞定了(看到结果你就知道怎么办了,不再解释)
#11
试试这个:
List<T> list = new ArrayList<T>(0);
Method method = list.class.getMethod("get",null);
Class returnTypeClass = method.getReturnType();
returnTypeClass就是返回类型了
List<T> list = new ArrayList<T>(0);
Method method = list.class.getMethod("get",null);
Class returnTypeClass = method.getReturnType();
returnTypeClass就是返回类型了
#1
#2
#3
这个问题和我的问题还是有区别的 。
这个问题是获取集合里面元素的类型。
我现在的问题是这样的:
public void test01(List list){
// 打印List中泛型的类型
}
比如
List<String> list01 = new ArrayList<String>();
test01(list01);
应该打印String 类型
List<Integer> list02 = new ArrayList<Integer>();
test01(list02);
应该打印Integer类型
#4
你可以自己判断下类型。
#5
我现在没办法获取它是什么类型的。
#6
不用发射,这样判断就可以了。
List list = new ArrayList();
list.add("test");
list.add(1);
for (Object object :list) {
if (object instanceof String) {
System.out.println("String");
}else if (object instanceof Integer) {
System.out.println("Integer");
}
}
#7
public class GenericTest
{
public List<String> list = new LinkedList<String>();
public static void main(String[] args) throws SecurityException, NoSuchFieldException
{
ParameterizedType pt = (ParameterizedType) GenericTest.class.getField(
"list").getGenericType();
System.out.println(pt.getActualTypeArguments().length);
System.out.println(pt.getActualTypeArguments()[0]);
}
}
#8
这个list只能是成员变量或方法变量中才能获得他的泛型。
#9
是的!
#10
这个好办,真实运气了楼主你,最近我就研究这个东西
首先导入这个qdox-1.12.jar(你百度一下就搞定了)
然后这样: field.getType().getGenericValue() 就搞定了(看到结果你就知道怎么办了,不再解释)
首先导入这个qdox-1.12.jar(你百度一下就搞定了)
然后这样: field.getType().getGenericValue() 就搞定了(看到结果你就知道怎么办了,不再解释)
#11
试试这个:
List<T> list = new ArrayList<T>(0);
Method method = list.class.getMethod("get",null);
Class returnTypeClass = method.getReturnType();
returnTypeClass就是返回类型了
List<T> list = new ArrayList<T>(0);
Method method = list.class.getMethod("get",null);
Class returnTypeClass = method.getReturnType();
returnTypeClass就是返回类型了