Eu tenho três classes em jogo aqui:
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() {
}
}
Dentro de MyClass1
, preciso criar uma instância MyClass2
e chamar o fetch()
método:
List<IdHolder<ID>> previous = new MyClass2<IdHolder<ID>>(???).fetch();
Se eu usar tipos brutos como este:
List<IdHolder> previous = new MyClass2<>(IdHolder.class).fetch();
Funciona, mas o IntelliJ reclama que eu uso tipos brutos (obviamente).
Eu tentei:
TypeReference<IdHolder<ID>> t = new TypeReference<IdHolder<ID>>() {};
O que posso colocar ???
para obter o tipo de classe IdHolder<ID>
ou isso simplesmente não é possível devido ao apagamento do tipo e tenho que usar tipos brutos? Eu pensei que esse era o objetivo TypeReference
.