Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
(Groovy/Java)将注释继承到内部类_Java_Inheritance_Groovy_Annotations_Boilerplate - Fatal编程技术网

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

(Groovy/Java)将注释继承到内部类,java,inheritance,groovy,annotations,boilerplate,Java,Inheritance,Groovy,Annotations,Boilerplate,我有一堆类,这些类又包含许多内部/嵌套类,它们需要注释来进行反序列化(@JsonIgnoreProperties)和减少覆盖样板文件的Equals(@EqualsAndHashCode,Groovy默认API,而不是Lombok) 我的代码如下所示: @JsonIgnoreProperties(ignoreUnknown = true) @EqualsAndHashCode(includeFields = true) class SomeClass { String id @

我有一堆类,这些类又包含许多内部/嵌套类,它们需要注释来进行反序列化(@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,因此我不得不在每个内部类中重复它们


有没有办法简化这个样板文件?

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

  • 作者可能会编写注释处理器来继承注释,因此用户必须编写更少的注释
  • 作者可能会编写注释处理器,使其不继承注释,这样就可以通过单独查看类而不必读取每个超类来明确类的含义
这两种选择中的任何一种都是站得住脚的。我倾向于后者,因为它提高了可读性,而且代码的阅读频率比编写频率高

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