注解的基础应用

1.概念

  注解的作用时增强Java代码,同时利用反射技术可以扩充实现很多功能(比如,日志生成和权限认证),传统我们通过xml文本文件声明方式,而现在主流的开发都是基于注解方式,代码量最少,框架可以根据注解去生成很多的代码,从而减少代码量,程序更易读,例如最火爆的SpringBoot就是完全基于注解技术实现
  注解设计非常精巧,可以超越java代码的功能,让代码变得更加强大

2.分类

  • JDK自带注解
    JDK自带的注解就5个
  • @override——重写注解
  • @Deprecated——标记这个方法已经过时了,但是我们就要用,别提示国企
  • @SuppressWarning(“deprecation”)
  • @SafeVarargs 堆污染,不常用
  • @FunctionalInterface 配合函数式编程拉姆达表达式,不常用
  • 元注解——描述注解的注解
  • @Target ——自定义注解上的注解,表示注解用在哪里:类上、方法上、属性上
  • @Retention———注解的生命周期:源文件中、class文件中、运行中
  • @Inherited ——允许子注解继承
  • @Documented ——生成javadoc式会包含注解
  • @Repeatable——注解为可重复类型注解,可在一个地方多次使用,不常用

3.元注解

3.1 @Target ——Elementype.class

  • 描述注解的使用范围:
字段功能
ElementType.ANNOTATION_TYPE应用于注释类型
ElementType.CONSTRUCTOR应用于构造函数
ElementType.FIELD应用于字段或属性
ElementType.LOCAL_VARIABLE应用于局部变量
ElementType.METHOD应用于方法级
ElementType.PACKAGE应用于包声明
ElementType.PARAMETER应用于方法的参数
ElementType.TYPE应用于类的元素

3.2 @Retention——RententionPolicy

  • 定义了该注解被保留的时间长短,某些注解仅出现在源代码中,而被编译器丢弃;
  • 而另外一些却被编译在class文件中;编译在class文件中的注解可能会被虚拟机忽略,而另一些却被编译在class文件中;编译在clss文件中的注解可能会被虚拟机忽略,而另一些在class被装在时被读取,只有不会忽略的才会被反射拿到
  1. SOURCE——在源文件中有效(即源文件保留)
  2. CLASS——在class文件中有效(即class保留)
  3. RUNTIME——在运行时有效(运行时保留)

3.2 注解创建和反射获取注解参数

  • 注解创建
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface TestAnnotation {
    int number() default 111;
    String description() default "注解测试";
}
  • 获取注解属性
public class test1119 {
    @Test
    public void testC(){
        Class cls = annotationTest.class;

        Method[] methods = cls.getMethods();
        TestAnnotation annotation1 = methods[0].getAnnotation(TestAnnotation.class);
        TestAnnotation annotation2 = methods[1].getAnnotation(TestAnnotation.class);
        System.out.println(annotation1.number()+""+annotation1.description());
        System.out.println(annotation2.number()+""+annotation2.description());

    }
}

class annotationTest{
    @TestAnnotation
    public void testA(){

    }
    @TestAnnotation(number = 99,description = "新的注解")
    public void testB(){

    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值