我可以在实现我的界面的类中进行一些注释吗?

时间:2012-05-11 20:41:28

标签: java

我有这个界面:

public interface IDbTable extends Serializable
{
    public int getId();
}

我需要强制实现IDbTable的所有类,要有一个注释“@DatabaseTable”,并且类中至少有一个具有“@DatabaseField”的字段。 实现IDbTable的唯一方法是这样:

@DatabaseTable(tableName = "Something")
public static class TestTable implements IDbTable
{
            @DatabaseField
            public int id;

    public int getId()
    {
        return id;
    }
}

接口或继承是否可行? 今天我有一个单元测试,扫描所有类并检查这个要求。这是一个好习惯吗?

2 个答案:

答案 0 :(得分:2)

根据Java文档,您无法将注释应用于将由实现类继承的接口:http://docs.oracle.com/javase/6/docs/api/java/lang/annotation/Inherited.html

  

表示自动继承注释类型。如果   继承的元注释存在于注释类型上   声明,用户查询类的注释类型   声明,类声明没有注释   类型,然后将自动查询类的超类   注释类型。将重复此过程直到注释   找到此类型,或者类层次结构(Object)的顶部是   到达。如果没有超类具有此类型的注释,那么   查询将指示有问题的类没有这样的注释。

     

请注意,如果带注释,则此元注释类型无效   type用于注释除类之外的任何内容。另请注意   这个元注释只会导致注释继承自   超; 对已实现接口的注释无效。

答案 1 :(得分:0)

为什么不使用注释处理,在发送到框架时,或在构建/部署时检查类中是否存在所需的注释。