Я не использовал эту платформу Play, поэтому я не уверен в деталях здесь, но обычно, когда кто-то делает то, что вы хотите сделать, в Java, он просто указывает конкретный класс в качестве параметра длястатический метод в вопросе.Конечно, это немного уродливо, но это Java.
Я предполагаю, что этот find
метод является статическим методом, который каким-то образом (посредством обработки аннотаций?) Добавляется этой средой для каждого расширяющегося класса, верно?В таком случае, я думаю, что единственным выходом для вас является сделать что-то вроде этого:
public static <T extends TemporalModel> T getLatest(Class<T> cl) {
try {
/* I don't know what type the find() method returns, so you'll have to fix the casting */
return(cl.cast(cl.getMethod("find", String.class).invoke("order by created").first()));
} catch(AllThosePeskyReflectionExceptions e) {
throw(new Error(e));
}
}
Я думаю, что это лучший доступный способ, учитывая помещение.Я знаю, что это некрасиво, поэтому я был бы рад ошибаться.:)