Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.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
java注释的组合_Java_Annotations - Fatal编程技术网

java注释的组合

java注释的组合,java,annotations,Java,Annotations,我知道。但是在java中有可能做类似的事情吗 @TopAnnot({ @SubAnnot("value1"), @SubAnnot("value2"), @AnotherSubAnnot("value3"), @SubAnnot("value4") }) public void aMethod(String param) { ... } @子批注和另一个子批注的顺序很重要 因此,以下解决方案的含义不同,因为我无法维持注释的顺序: @TopAnnot( s

我知道。但是在java中有可能做类似的事情吗

@TopAnnot({
    @SubAnnot("value1"),
    @SubAnnot("value2"),
    @AnotherSubAnnot("value3"),
    @SubAnnot("value4")
})
public void aMethod(String param) { ... }
@子批注
和另一个子批注的顺序很重要

因此,以下解决方案的含义不同,因为我无法维持注释的顺序:

@TopAnnot(
    subAnnot = {
        @SubAnnot("value1"),
        @SubAnnot("value2"),
        @SubAnnot("value4")
    },
    annotherAnnot = {
        @AnotherSubAnnot("value3")
    }
)
public void aMethod(String param) { ... }
另一个解决方案应该是以下内容,但编写起来要复杂得多,也不容易理解:

@TopAnnot({
    @MyAnnot(type=AnnotType.SubAnnot, value = "value1"),
    @MyAnnot(type=AnnotType.SubAnnot, value = "value2"),
    @MyAnnot(type=AnnotType.AnnotherSubAnnot, value = "value3"),
    @MyAnnot(type=AnnotType.SubAnnot, value = "value3")
})
public void aMethod(String param) { ... }

有更简单的解决方案吗?

您可以通过使用添加一些可读性,但这并不能解决实际问题。它仍然使用只保留每个类型声明顺序的容器注释。因此,您可以使其看起来像第一个示例,但您仍然不知道运行时的实际顺序

@SubAnnot("value1"),
@SubAnnot("value2"),
@AnotherSubAnnot("value3"),
@SubAnnot("value4")
public void aMethod(String param) { ... }
我认为在运行时没有很好的解决方案。如果您可以访问源代码,那么在编译时应该可以获得声明的顺序

如果您在运行时需要一个解决方案,您可能需要使用示例中的
类型
字段,或者添加另一个显式声明订单的字段,例如:

@SubAnnot(id=1, value="value1")
@AnotherSubAnnot(id=2, value="value2"))
@SubAnnot(id=3, value="value3")

您可以通过使用添加一些可读性,但这并不能解决实际问题。它仍然使用只保留每个类型声明顺序的容器注释。因此,您可以使其看起来像第一个示例,但您仍然不知道运行时的实际顺序

@SubAnnot("value1"),
@SubAnnot("value2"),
@AnotherSubAnnot("value3"),
@SubAnnot("value4")
public void aMethod(String param) { ... }
我认为在运行时没有很好的解决方案。如果您可以访问源代码,那么在编译时应该可以获得声明的顺序

如果您在运行时需要一个解决方案,您可能需要使用示例中的
类型
字段,或者添加另一个显式声明订单的字段,例如:

@SubAnnot(id=1, value="value1")
@AnotherSubAnnot(id=2, value="value2"))
@SubAnnot(id=3, value="value3")