(Groovy/Java)将批注继承给内部类



我有一堆类,这些类又包含许多内部/嵌套类,这些类需要注释以进行反序列化(@JsonIgnoreProperties)和减少Equals覆盖样板(@EqualsAndHashCode,Groovy默认API,而不是龙目岛)。

我的代码如下所示:

@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,因此我被迫在每个内部类中重复它们。

有没有办法减少这个样板?

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

    作者可能会编写批注
  • 处理器来继承批注,以便用户必须编写较少的批注。
  • 作者可能会编写注释处理器以不继承注释,以便通过单独查看类来了解类的含义,而不必同时读取每个超类。

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

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

最新更新