(Groovy / Java)继承内部类的注释

时间:2017-10-25 11:06:47

标签: java inheritance groovy annotations boilerplate

我有一堆类,它们包含许多内部/嵌套类,需要注释用于反序列化(@JsonIgnoreProperties)和减少Equals重写样板(@EqualsAndHashCode,Groovy默认API,而不是Lombok)。

我的代码如下所示:

@JsonIgnoreProperties(ignoreUnknown = true)
@EqualsAndHashCode(includeFields = true)
class SomeClass {
    String id


    @JsonIgnoreProperties(ignoreUnknown = true)
    @EqualsAndHashCode(includeFields = true)
    class InnerOne {
        String foo
    }

    @JsonIgnoreProperties(ignoreUnknown = true)
    @EqualsAndHashCode(includeFields = true)
    class InnerTwo {
        String bar
    }

    // and so on...

}

这些注释都属于第三方库,并且未标记为@Inherited,因此我不得不在每个内部类中重复这些注释。

有没有办法减少样板?

1 个答案:

答案 0 :(得分:0)

注释处理器的作者已决定是否继承注释是一个好主意。

  • 作者可能会编写注释处理器来继承注释,因此用户必须编写更少的注释。
  • 作者可能会将注释处理器编写为不继承注释,因此通过单独查看类来明确类的含义,而不必阅读每个超类。

这些都是一种可辩护的选择。我倾向于倾向于后者,因为它提高了可读性,并且代码的读取频率高于编写代码。

如果要更改行为,则需要通过修改其源代码来修改注释处理器的语义。在您的情况下,可能更容易编写额外的注释。