java - 获取通用数组类

标签 java arrays generics

我有一个函数:

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/

相关文章:

java - coldFusion jvm垃圾收集不是

arrays - numpy.add.at 比就地添加慢?

javascript - 动态决定for循环的顺序

Java Collection::toArray 及其子类

c# - Action<Action> 是什么意思?

java - 您可以将 int 数组传递给 java 中的泛型方法吗?

java - 静态和公共(public)定位

java - 在 Cygwin 上运行 Java 程序 - 找不到类路径

java - 使用异步加载的 LoadingCache