Früher habe ich eine Wrapper Annotation von Hand zu erklären, mit einem Array, und dann rufen Sie wie folgt:Order of automatisch eingewickelt @Repeatable Anmerkungen
@Foos({ @Foo(0), @Foo(1), @Foo(2) })
public void bar() {}
Da ich einen Array mit den { ... }
initializers Herstellung wurde Es war mehr als klar, dass die Reihenfolge der Deklaration identisch sein sollte, wenn ich später über Reflection auf diese Methode zugreife.
Wenn ich jedoch die neue @Repeatable
Annotation von Java 8 verwende, kann ich garantieren, dass die Bestellung beibehalten wird?
erklärte ich einen einfachen Satz von Anmerkungen:
public @interface Foos {
Foo[] value();
}
@Repeatable(Foos.class)
public @interface Foo {
int value();
}
und einige Tests mit den unterschiedlichsten Szenarien laufen:
@Foo(0) @Foo(1) @Foo(2)
public void bar1() {}
@Foo(2)
@Deprecated @Foo(5)
@Foo(10)
public void bar2() {}
und alles scheint einwandfrei zu arbeiten (wenn sie über Reflection Zugriff), aber Ich würde mich nicht auf undokumentiertes Zeug verlassen wollen. Es scheint mir offensichtlich, dass dies der Fall sein sollte, aber ich kann es nirgends finden! Kann das jemand beleuchten?
Danke! Jetzt fühle ich mich sicher mit diesem :) –