You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java泛型问题:集合方法的TypeReference无法正常使用

泛型场景下获取带参数内部类的Class实例问题

以下是涉及的三个类代码:

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:

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

请问:我应该在???处填入什么才能获取IdHolder<ID>的类类型?还是由于Java的类型擦除机制,根本无法实现,只能退而求其次使用原始类型?我原本以为TypeReference就是用来解决这类泛型类型获取问题的。


内容的提问来源于stack exchange,提问作者SledgeHammer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 09:05:03