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
相关产品推荐
相关产品推荐

