代码之家  ›  专栏  ›  技术社区  ›  SledgeHammer

集合方法的Java泛型TypeReference不起作用

  •  0
  • SledgeHammer  · 技术社区  · 7 月前

    我有三个班在这里上课:

    public class MyClass1<T, ID> {
    
      @Getter
      private static class IdHolder<ID> {
        private ID id;
      }
    }
    
    public class MyClass2<T> {
       public MyClass2(Class<? extends T> type) {
       }
    
       public List<T> fetch() {
       }
    }
    

    的内部 MyClass1 ,我需要创建的实例 MyClass2 并调用 fetch() 方法

    List<IdHolder<ID>> previous = new MyClass2<IdHolder<ID>>(???).fetch();
    

    如果我使用 原始类型 这样地:

    List<IdHolder> previous = new MyClass2<>(IdHolder.class).fetch();
    

    它确实有效,但后来IntelliJ抱怨我使用了原始类型(显然)。

    我尝试过:

    TypeReference<IdHolder<ID>> t = new TypeReference<IdHolder<ID>>() {};
    

    我能放什么 ??? 获取的类类型 IdHolder<ID> 或者这是因为类型擦除而不可能的,我必须使用原始类型?我认为这就是的全部意义 TypeReference .

    1 回复  |  直到 7 月前
        1
  •  0
  •   Louis Wasserman    7 月前

    这是不是因为类型擦除而不可能,而且我必须使用原始类型?

    这是正确的,这是不可能的。您将不得不使用原始类型。