如何使方法只接受实体
How to make a method accepting only Entity
我想制作一个接受任何类型 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
是接口或 class 时才有效;在你的情况下,它是一个注释,这是 JLS 禁止的。
唯一的方法是通过运行时检查,像这样:
private static void test(EntityObject entityObject) {
Annotation [] all = entityObject.getClass().getAnnotations();
// filter on the ones you care
}
但这当然只在运行时有效。
我想制作一个接受任何类型 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
是接口或 class 时才有效;在你的情况下,它是一个注释,这是 JLS 禁止的。
唯一的方法是通过运行时检查,像这样:
private static void test(EntityObject entityObject) {
Annotation [] all = entityObject.getClass().getAnnotations();
// filter on the ones you care
}
但这当然只在运行时有效。