📜  Java中的 AnnotatedElement getDeclaredAnnotation() 方法及示例(1)

📅  最后修改于: 2023-12-03 15:16:20.011000             🧑  作者: Mango

Java中的 AnnotatedElement getDeclaredAnnotation() 方法及示例

在Java中,AnnotatedElement接口提供了访问注解信息的方法,其中之一就是getDeclaredAnnotation()方法。这个方法可以用来获取指定类型的注解,如果该注解不存在,则返回null

语法
public <A extends Annotation> A getDeclaredAnnotation(Class<A> annotationClass)

参数:

  • annotationClass:注解的Class对象,用于指定要获取的注解类型

返回值:

  • 指定类型的注解对象,如果不存在则返回null
示例

下面是一个示例,演示了如何使用getDeclaredAnnotation()方法获取方法上的注解。

import java.lang.annotation.*;

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface MyAnnotation {
    String value();
}

public class MyClass {

    @MyAnnotation("Hello, World!")
    public void myMethod() {
        // 方法体
    }

    public static void main(String[] args) throws NoSuchMethodException {
        MyClass obj = new MyClass();
        // 获取myMethod方法
        java.lang.reflect.Method method = MyClass.class.getMethod("myMethod");

        // 获取MyAnnotation注解对象
        MyAnnotation annotation = method.getDeclaredAnnotation(MyAnnotation.class);

        if (annotation != null) {
            String value = annotation.value();
            System.out.println(value); // 输出:Hello, World!
        }
    }
}

在上面的示例中,我们定义了一个自定义注解MyAnnotation,然后将该注解应用于myMethod方法。在main方法中,我们通过getMethod()方法获取了myMethod方法的Method对象,然后使用getDeclaredAnnotation()方法获取了MyAnnotation注解对象。

如果注解存在,我们可以使用注解对象来访问注解中定义的属性。在示例中,我们通过annotation.value()获取了MyAnnotation注解的value属性,并将其打印输出。

需要注意的是,getDeclaredAnnotation()方法只能获取直接应用于该元素的注解,无法获取继承而来的注解。如果需要获取继承的注解,可以使用getAnnotation()方法。

总结

getDeclaredAnnotation()方法是AnnotatedElement接口用于获取指定类型注解的方法之一。通过使用该方法,我们可以轻松访问注解中定义的属性,并根据注解的信息来实现相应的逻辑。在实际开发中,注解和反射结合使用能够为我们提供更大的灵活性和扩展性。