我有一个函数:
add(Collection<?> many)
我这样调用它:
Collection<NewClass> awa = new ArrayList<NewClass>();
add(awa)
我如何获得 <?>
类型?在那个函数里?
many.getClass()
给出 ArrayList
.
为什么我需要这个?尝试创建一个通用的 DAO 方法来添加 < ? >
的集合.
编辑:
这样试过:
public static void add(Collection<?> many) {
Type typeArg = ((ParameterizedType)Testing.class.getGenericSuperclass()).getActualTypeArguments()[0];
System.out.println(typeArg);
}
Collection<NewClass> awa = new ArrayList<NewClass>();
add(awa);
出现错误:
Exception in thread "main" java.lang.ClassCastException: java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType
最佳答案
many.getClass()
给出 ArrayList
。
当然,这听起来不错。
如果您改用 many.get(0).getClass()
会怎样?如果可以的话,这里我们询问的是元素,而不是容器。我是 C#er,所以这可能不是 100% 正确的方法,但这是我在 C# 中采用的方法。
关于java - 获取通用数组类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11847817/