使用注释作为类型化方法参数

时间:2013-11-29 17:26:21

标签: java annotations

在Java中,可以使用类注释作为类型化方法参数。 例如 - 这是您的注释

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface Entity {
}

然后

@Entity
public class Car {
...
}

然后再做

interface Persister {
     void persist(Entity entity);
}

2 个答案:

答案 0 :(得分:1)

你可以这样做,但它不会做你期望的。此持久化(实体)方法只能使用您的实体注释,而不是您要使用的类的实例。

相反,你可以做的是

interface Entity { }

interface Car extends Entity {

interface Persister {
     void persist(Entity entity);
}

这将按预期工作,您可以将Car的实例传递给persist方法。

答案 1 :(得分:1)

你可以做到

public @interface Entity {
    String name();
}


public class Car implements Entity{
    public String name(){ return "car"; }
}

但这很奇怪。 Entity应该是普通的界面。

---

虽然通过注释处理,我们可以要求方法的参数必须具有包含特定注释的静态类型。不确定是否有人这样做过。