注解(Annoation)是什么?

Annoation(注解)是Java提供的一种对元程序中元素关联信息和元数据(metadata)的途径和方法。Annotation是一个接口,程序可以通过反射来获取指定元素的Annotation对象,然后通过该Annotation对象来获取注解中的元数据信息。

注解它可以增强我们的java代码,同时利用反射技术可以扩充实现很多功能。它们被广泛应用于三大框架底层。传统我们通过xml文本文件声明方式,而现在最主流的开发都是基于注解方式,代码量少,框架可以根据注解去自动生成很多代码,从而减少代码量,程序更易读。例如最火爆的SpringBoot就完全基于注解技术实现。

注解设计非常精巧,初学时觉得很另类甚至多余,甚至垃圾。有了java代码干嘛还要有@注解呢?但熟练之后你会赞叹,它竟然可以超越java代码的功能,让java代码瞬间变得强大。

常见的元注解:@Target、@Retention,jdk提供将来描述我们自定义的注解的注解。

注解的分类?

注解可以分为三类:JDK自带注解 ; 元注解 ; 自定义注解JDK注解:@Override

@Deprecated标记就表明这个方法已经过时了,但我就要用,别提示我过期

@SuppressWarnings(“deprecation”) 忽略警告

@SafeVarargs jdk1.7出现,堆污染,不常用

@FunctionallInterface jdk1.8出现,配合函数式编程拉姆达表达式,不常用元注解:

描述注解的注解,就5个:@Target 注解用在哪里:类上、方法上、属性上

@Retention 注解的生命周期:源文件中、class文件中、运行中

@Inherited 允许子注解继承

@Documented 生成javadoc时会包含注解,不常用

@Repeatable注解为可重复类型注解,可以在同一个地方多次使用,不常用

自定义注解:

自定义注解通常搭配元注解使用。

注解的使用?

代码已上,注释详细!

//1.1,自定义注解 :@interface 注解名//1.2,指定注解的位置--@Target :在类上/方法上/属性上/变量上...@Target({ElementType.METHOD,ElementType.FIELD})//1.3,Test注解可以出现在方法上,属性上//1.4,指定注解的生命周期--源码里/class文件里/运行时@Retention(RetentionPolicy.SOURCE)//1.5,Test注解可以出现在源码中@interface Test{//定义注解 //给Test注解添加name属性-- 要求使用注解时必须指定name的值 ,也可以给name赋予默认值 String name() default "";//给属性添加默认值,方便后面的使用,使用时可以不用非得赋值了 //添加特殊的属性,使用时可以直接赋值,类似于@Test("123"),其实是@

Test(value = "123")的简写 String value() default "";
}
//2.1,使用注解class Hello{
@Test(name = "jack")//2.3,使用注解时,由于注解有属性要求,所以必须赋值 String name;
//2.2,必须在指定位置使用注解 // @Test("hi")//给value赋值 @Test(name = "jack",value = "hello")
public void hi(){
System.out.println("hi()....");
}
}