Faceci jest sposobem na przekazanie adnotacji jako bezpośredniego parametru (raczej przez wykonanie całego narzutu refleksji)? Na przykład w poniższym kodzie, mam numer adnotacji, która posiada wartość int, chcę przekazać jako parametr do metody addImpl, jak mogę to zrobić (inny niż przez odbicie)?Czy istnieje sposób przekazywania adnotacji Java jako parametru?
Code Snippet:
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.PARAMETER, ElementType.FIELD})
public @interface Number {
int value();
}
public void add(int x2) {
addImpl(@Number(value = 10) lol, x2);
}
public void addImpl(Number a, int b) {
System.out.println(a.value() + b);
}
public static void main(String[] args) {
new TestClass().add(3);
}
Dlaczego jest zdefiniowany jako liczba adnotacji zamiast regularnej klasie? Celem adnotacji jest statyczne dołączanie metatanych w czasie kompilacji. Jeśli to nie jest twój cel, z jakiego powodu jest on zdefiniowany jako adnotacja? – jthg
Liczba jest tylko próbką, którą wymyśliłem, robię to, aby ułatwić protokół;) –