我想制作一个可以接受任何类型的javax.persistence.Entity对象的方法。
我尝试过这个。
通用方法
import javax.persistence.Entity;
public <T extend Entity> void GenericMethod(T entity) {...}
用于测试的实体
@Entity
public class EntityObject {...}
测试
GenericMethod(new EntityObject());
我在编译时出错,类型...的方法GenericMethod(T)不适用于参数(EntityObject)。
如何将方法限制为仅接受带有@Entity注释的对象?
答案 0 :(得分:0)
最简单的答案是您不能这样做。至少不作为编译时检查。 T extend Entity
仅在Entity
是接口或类时才有效;在您的情况下,这是一个注释,并且JLS禁止这样做。
唯一的方法是通过运行时检查,如下所示:
private static void test(EntityObject entityObject) {
Annotation [] all = entityObject.getClass().getAnnotations();
// filter on the ones you care
}
但是,这当然只能在运行时 起作用。