Java 如何在注释中使用注释?
鉴于:Java 如何在注释中使用注释?,java,annotations,nested,Java,Annotations,Nested,鉴于: public @interface MyAnnotation(){ public SomeType[] value(); } 在Java 7中,是否可以执行以下操作: @MyAnnotation({ value1, @MyAnnotation({subValue1, subvalue2, ...}) value2, ... valueN }) public Object someProperty; 你可以。这是库中的一个示例(省略注释): 你可
public @interface MyAnnotation(){
public SomeType[] value();
}
在Java 7中,是否可以执行以下操作:
@MyAnnotation({
value1,
@MyAnnotation({subValue1, subvalue2, ...}) value2,
...
valueN
})
public Object someProperty;
你可以。这是库中的一个示例(省略注释):
你可以。这是库中的一个示例(省略注释): 如何在注释中使用注释 也许像这样
public @interface MyAnnotation(){
public SomeType[] value();
public MyAnnotation[] refine();
}
@MyAnnotation(
{value1, value2},
refine={ @MyAnnotation({valueX, valueY}), @MyAnnotation(valueM) }
)
public Object someProperty;
另外,在Java8中,您可以使用注释——因此您可以对“主要”(例如第一个)进行细化或添加后续重复相同注释带来的其他细化
如何在注释中使用注释
也许像这样
public @interface MyAnnotation(){
public SomeType[] value();
public MyAnnotation[] refine();
}
@MyAnnotation(
{value1, value2},
refine={ @MyAnnotation({valueX, valueY}), @MyAnnotation(valueM) }
)
public Object someProperty;
此外,在Java 8中,您可以使用注释-因此您可以对“主要”(例如第一个)进行细化或添加后续重复相同注释所带来的其他细化。您是否计划创建一个将使用该注释的框架?MyAnnotation是否派生自
SomeType
?(对,我不这么认为)。那么您想如何创建一个SomeType
数组,其中包含一个不是SomeType
类型的元素?@TimBiegeleisen-yes.@adriancolomychivalueX
和subValueY
都是SomeType
是,但@MyAnnotation({subValue1,subvalue2,…})类型的数组value2
不是SomeType
类型的值。您是否计划创建一个将使用此值的框架?MyAnnotation是否源自SomeType
?(对,我不这么认为)。那么您想如何创建一个SomeType
数组,其中包含一个不是SomeType
类型的元素?@TimBiegeleisen-yes.@adriancolomychivalueX
和subValueY
都是SomeType
是,但@MyAnnotation({subValue1,subvalue2,…})类型的数组value2
不是SomeType
类型的值。这只是解释了如何多次使用同一注释。不完全符合我的问题。加上彼此使用的注释是不同的JsonSubTypes.Type
在JsonSubTypes
中使用。注释被视为元数据。它们不是对象,因此它们与其他实例(如String)不共享同一祖先对象。这只是解释了如何多次使用同一注释。不完全符合我的问题。加上彼此使用的注释是不同的JsonSubTypes.Type
在JsonSubTypes
中使用。注释被视为元数据。它们不是对象,因此它们与字符串等其他实例不共享相同的祖先对象。这会导致编译器错误:Cyclic annotation element type
,正如我所说的。。。“也许”。回到可重复的状态。或者创建另一个具有类似值的注释这会导致编译器错误:循环注释元素类型
,正如我所说的。。。“也许”。回到可重复的状态。或者创建另一个具有类似值的注释
public @interface MyAnnotation(){
public SomeType[] value();
public MyAnnotation[] refine();
}
@MyAnnotation(
{value1, value2},
refine={ @MyAnnotation({valueX, valueY}), @MyAnnotation(valueM) }
)
public Object someProperty;