我有一堆类,这些类又包含许多内部/嵌套类,这些类需要注释以进行反序列化(@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,因此我被迫在每个内部类中重复它们。
有没有办法减少这个样板?
注释处理器的作者已经决定了继承注释是否是一个好主意。
- 作者可能会编写批注
- 处理器来继承批注,以便用户必须编写较少的批注。
- 作者可能会编写注释处理器以不继承注释,以便通过单独查看类来了解类的含义,而不必同时读取每个超类。
这两种选择都是可以辩护的选择。 我倾向于后者,因为它提高了可读性,并且代码的阅读频率高于编写频率。
如果要更改行为,则需要通过修改注释处理器的源代码来修改其语义。 在您的情况下,编写额外的注释可能更容易。