Получение аннотации типа параметра
Начинаю изучать аннотации. Есть аннотация вида:
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE_USE)
public @interface Bar{
String value() default "Hello, Bar!";
}
И метод:
public static void show(@Bar int count) {
//some code
}
Как с помощью рефлексии получить дефолтное значение из аннотации? Аннотирую тип параметра метода.
Ответы (1 шт):
Автор решения: Alexandr
→ Ссылка
Как-то так:
package com.somepackage;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.util.Arrays;
public class Main {
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE_USE)
public @interface Bar{
String value() default "Hello, Bar!";
}
public static void show(@Bar int count) {
//some code
}
public static void main(String[] args) throws Exception {
var method =
Main.class.getDeclaredMethod(
"show", int.class);
Arrays.stream(method.getAnnotatedParameterTypes())
.forEach(apt -> {
Arrays.stream(apt.getAnnotations())
.filter(a -> a instanceof Bar)
.map(a -> (Bar)a)
.forEach(ba -> System.out.println(ba.value()));
});
}
}
Вывод:
Hello, Bar!