是否应使用自定义注释来存储有关对象的信息?

时间:2017-10-02 08:02:50

标签: java inheritance annotations

在网上搜索自定义Java注释的使用后,我仍然不能100%清楚我应该和不应该使用它们。

假设我们有一个名为Paperwork的抽象类,它正由几个子类扩展,如TaxesHomework。这些子类中的每一个都使用@Paperwork进行注释,其中包含1或2个必需参数以及具有特定默认值的各种参数。

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

    String name();

    boolean important() default false;

    int dueBy() default Calendar.MONDAY;

    // more variables...
}

Paperwork现在在方法getSummary()中执行一些内部工作。它查找所有使用@Paperwork注释的类,并创建所有文书工作的总体摘要/概述。任何未使用它注释的类仍在开发中,并且被简单地忽略。

到目前为止, 可以通过构造函数或构建器模式实现。

但是现在您希望将摘要本身视为Paperwork的类型,因此您创建了一个Summary类,其注释为@Paperwork,现在可以创建摘要视图。但是,注释处理仍保留在超类中。这允许超类将摘要信息提供给摘要本身而无需任何getter。

现在我的问题是:这是否可以很好地利用自定义注释? 通过注释,超类可以获取每个类数据并将其存储在单个变量中,而不是20个字段存储20个可能的参数,如果要将它们保密,则可以存储20个以上的getter。

依靠注释提供仅与单个子类真正相关的数据对我来说似乎有点奇怪。

赞赏任何意见。

0 个答案:

没有答案