📜  Java中的类 isAnnotationPresent() 方法及示例(1)

📅  最后修改于: 2023-12-03 14:42:58.759000             🧑  作者: Mango

Java中的类isAnnotationPresent()方法及示例

在Java程序中,我们可以使用注解来为类、方法和属性添加额外的信息。有时候我们需要在程序运行时,通过反射来获取类中的注解信息。Java中的Class类提供了一个isAnnotationPresent()方法,用来判断指定的注解是否存在于当前类中。

使用方法

语法:

public boolean isAnnotationPresent(Class<? extends Annotation> annotationClass)

参数:

  • annotationClass:需要判断的注解类型,需要使用@interface关键字来定义。

返回值:

  • 如果该注解存在于当前类中,则返回true,否则返回false
示例

下面是一个示例,演示如何使用isAnnotationPresent()方法来判断MyAnnotation注解是否存在于Person类中。

首先定义一个注解@MyAnnotation,并使用它来修饰Person类。

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

@MyAnnotation("This is a person class.")
public class Person {
    // ...
}

然后在程序运行时,使用反射获取Person类,并判断其中是否包含MyAnnotation注解。

public class Main {
    public static void main(String[] args) {
        // 获取Person类
        Class<?> clazz = Person.class;

        // 判断MyAnnotation是否存在于Person类中
        boolean hasAnnotation = clazz.isAnnotationPresent(MyAnnotation.class);

        // 如果存在,则读取注解内容并输出
        if (hasAnnotation) {
            MyAnnotation annotation = clazz.getAnnotation(MyAnnotation.class);
            System.out.println(annotation.value());
        }
    }
}

输出结果将会是:

This is a person class.

注意,为了在程序运行时能够获取到注解信息,需要为注解添加@Retention(RetentionPolicy.RUNTIME)元注解。同时,注解只能修饰类、方法和属性等程序元素,需要使用@Target注解来明确注解修饰的目标类型。在本例中,我们使用@Target(ElementType.TYPE)来指定MyAnnotation注解可以修饰类。