如何使方法只接受实体

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
}

但这当然只在运行时有效