0
点赞
收藏
分享

微信扫一扫

Java中自定义注解

ivy吖 2023-08-02 阅读 81

1.注解的作用

  • 提供元数据信息
  • 编译时检查
  • 运行时处理
  • 代码分析
  • 与框架集成

2.基本步骤

1.使用@interface关键字定义一个注解类型

public @interface AnnotationDemo {
    //注解成员
    String value();
    int num() default 0;
}

2.在注解类型中定义成员变量,该注解使用时可以设置这些成员的值。注解的成员变量的类型可以是基本类型、string、class、枚举类型、其它注解类型或上述类型的数组。

3.可以给注解的成员变量设置默认值,使用defalut关键字,如果不设置默认值则表示必须在使用注解时指定该成员的值。

4.在代码中使用自定义注解,格式为@注解名(成员名1=值1,成员名2=值2......)

@AnnotationDemo(value = "testAnnotion") //使用自己定义的注解
public class AnnotationTest {
}

5.自定义注解可以标记在类、方法、字段、参数等元素上,对于不同的元素可以使用不同的元注解来限制注解的使用范围。

@AnnotationDemo(value = "testAnnotion")
public class AnnotationTest {
	//作用在方法上
    @AnnotationDemo(value = "method")
    public void test1(/*作用在参数上*/@AnnotationDemo(value = "param") String str){
        //作用在变量上
        @AnnotationDemo(value = "field")
        String a;
    }

}

6.获取注解的值

@Target({ElementType.TYPE, ElementType.METHOD})//意味这个注解可以作用在方法和类上
@Retention(RetentionPolicy.RUNTIME)//注解作用在运行阶段
public @interface AnnotationDemo {
    //注解成员
    String value();
    int num() default 0;
}

@AnnotationDemo(value = "testAnnotion")
public class AnnotationTest {

}

class test{
    public static void main(String[] args) {
        //通过反射获取类
        Class c = AnnotationTest.class;
        //判断该类是否存在自定义的注解AnnotationDemo
        if (c.isAnnotationPresent(AnnotationDemo.class)){
            AnnotationDemo annotation = (AnnotationDemo) c.getAnnotation(AnnotationDemo.class);
            System.out.println(annotation.value());
            System.out.println(annotation.num());
        }
    }
}

运行结果:

Java中自定义注解_自定义注解


举报

相关推荐

0 条评论