У меня есть код:Получение имени класса из общего статического метода в Java
Model.java:
public abstract class Model <T> {
public static <T> T find(int id) {
T result = (T) blackMagicMethod(T.class, id);
return result;
}
}
, User.java
public class User extends Model<User> {
}
, Main.java:
public class Main {
public static void main(String[] args) {
System.out.println(User.find(1));
}
}
, blackMagicMethod:
public Object blackMagicMethod(Class clazz, int id) {}
Линия blackMagicMethod(T.class, id)
не работает, как и любое хаки, описанное в Getting the class name from a static method in Java.
Как я могу заставить этот код работать?
Добавление маркера класса в конструктор бесполезно здесь метод является статическим (и общий). Вам нужно будет передать его самому методу 'find'. –
Как я могу использовать переменную экземпляра в статическом методе? –
Ooops. Ответ обновлен. – aioobe