我想制作一个接受任何类型的 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 注释的对象???
最佳答案
简短的回答是你不能这样做。至少不是作为编译时检查。 T extend Entity
只有在 Entity
是接口(interface)或类时才有效;在您的情况下,这是一个注释,JLS 禁止这样做。
唯一的方法是通过运行时检查,像这样:
private static void test(EntityObject entityObject) {
Annotation [] all = entityObject.getClass().getAnnotations();
// filter on the ones you care
}
但这当然只能在运行时起作用。
关于jpa - 如何使方法只接受实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55896210/