Lua*_*ico 6 java annotations java-8
在此之前,我曾经手工使用数组声明包装器注释,然后像这样调用它:
@Foos({ @Foo(0), @Foo(1), @Foo(2) })
public void bar() {}
Run Code Online (Sandbox Code Playgroud)
由于我使用{ ... }初始化器创建了一个数组,所以当我稍后通过Reflection访问此方法时,顺序与声明的相同是非常清楚的.
但是,当我使用@RepeatableJava 8中的新注释时,我是否保证将保留订单?
我宣布了一组简单的注释:
public @interface Foos {
Foo[] value();
}
@Repeatable(Foos.class)
public @interface Foo {
int value();
}
Run Code Online (Sandbox Code Playgroud)
并针对最多样化的场景运行一些测试:
@Foo(0) @Foo(1) @Foo(2)
public void bar1() {}
@Foo(2)
@Deprecated @Foo(5)
@Foo(10)
public void bar2() {}
Run Code Online (Sandbox Code Playgroud)
一切似乎完美无缺(当通过Reflection访问时),但我不想依赖于未记录的东西.我觉得应该是这样,但我无法在任何地方找到它!任何人都可以对此有所了解吗?