gpt4 book ai didi

java - java注解的组成

转载 作者:太空宇宙 更新时间:2023-11-04 12:41:49 26 4
gpt4 key购买 nike

我知道there is no java annotation inheritance 。但是在java中可以做类似的事情吗?

@TopAnnot({
@SubAnnot("value1"),
@SubAnnot("value2"),
@AnotherSubAnnot("value3"),
@SubAnnot("value4")
})
public void aMethod(String param) { ... }

@SubAnnot@AnotherSubAnnot 的顺序很重要。

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

@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) { ... }

有没有更简单的解决方案?

最佳答案

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

@SubAnnot("value1"),
@SubAnnot("value2"),
@AnotherSubAnnot("value3"),
@SubAnnot("value4")
public void aMethod(String param) { ... }

我认为在运行时没有很好的解决方案。如果您有权访问源代码,那么应该可以在编译时获得声明的顺序。

如果您在运行时需要解决方案,您可能必须像示例中那样使用 type 字段,或者添加另一个显式声明顺序的字段,例如:

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

关于java - java注解的组成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36768553/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com