【问题标题】:Java - Create generic list with class Object as generic parameter?Java - 使用类 Object 作为通用参数创建通用列表?
【发布时间】:2021-04-24 21:59:03
【问题描述】:

假设我有一个对象Class<?> c。是否可以创建一个以 c 作为泛型参数的泛型列表?

所以是这样的:

Class<?> c = doSomething();
List<c> list = new ArrayList<c>();

【问题讨论】:

  • 如果你能做到这一点,那就没有用了。泛型类型仅在编译之前有用。如果你能做到这一点,你就不能用它做任何你不能用 List&lt;?&gt; 做的事情。

标签: java class generics parameters


【解决方案1】:

不,那是不可能的——至少你的语法不会编译。但是,您可以尝试在 Java 中学习 泛型,看看这是否有助于您的具体情况,因为这可能是 A-B 问题。

例如,这是有效的:

    <T> int yourFunction(List<T> items) {
        T item = items.get(0);
        // play with the item of type T, yeah!
    }

【讨论】:

    【解决方案2】:

    对于Class&lt;? extend T&gt; clazzList&lt;T&gt; 可用于clazz 创建的任何实例。对于Class&lt;? super T&gt; clazzList&lt;T&gt; 应该只包含与clazz 兼容的实例。

    对于Class&lt;?&gt;List&lt;Object&gt; 可能是您想要的。任何使用反射(包括Class)通常都是错误的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多