Класс универсального типа недоступен во время выполнения, т. Е. T.class
не имеет смысла.
Универсальные типы переводятся в Object
при компиляции. Это то, что называется Тип Erasure .
Если вам действительно нужен class
аргумента типа, вам нужно добавить его в качестве аргумента:
public abstract class Model <T> {
public static <T> T find(Class<T> clazz, int id) {
T result = (T) blackMagicMethod(clazz, id);
return result;
}
}