Annotation 注解
1.注解的写法
@XXX[(一些信息)]
2.注解放置在哪里
类的上面,属性的上面,方法的上面,构造方法的上面,参数的前面,
3.注解的作用
用来充当注释的作用(仅仅是一个文字的说明)
用来做代码的检测(验证)
可以携带一些信息
4.Java中有一些人家写好的注解供我们使用
@Override 用来做代码检测,检测此方法是否是一个重写
@Deprecated 用来说明方法是废弃的
@SuppressWarnings("") ,括号内的参数正常是一个数组,如果数组内的元素只有一个长度,可以省略数组的大括号
@SuppressWarnings(“unused”),变量定义后未被使用
@SuppressWarnings(“serial”),类实现了序列化接口,不添加序列化ID号
@SuppressWarnings(“rawtypes”),集合没有定义泛型
@SuppressWarnings(“deprecation”),方法已经废弃
@SuppressWarnings(“unchecked”),出现泛型问题时,可以不检测
产生多个问题时,可以写成数组的形式,如下:
@SuppressWarnings({“unused”,“unchecked”})
可以简写为
@SuppressWarnings(“all”)
5.注解中可以携带信息,也可以不携带信息,信息的类型只能是如下几个
基本数据类型
String类型
枚举类型enum
注解类型@
数组类型,数组的内部元素需要是上面的四个
6.如何描述注解
1.注解上面需要用元注解进行描述,通常需要描述的是注解写在哪里和注解的作用域
四个元注解如下
@Target:描述当前注解可以放置在哪里写
属性 ElementType.FIELD 方法 ElementType.METHOD 构造方法,ElementType.CONSTRUCTOR
@Target({ElementType.FIELD,ElementType.METHOD})
@Retention:描述这个注解存在什么作用域中
RetentionPolicy.SOURCE,源代码文件中
RetentionPolicy.CLASS,字节码文件中
RetentionPolicy.RUNTIME,内存执行中
@Retention(RetentionPolicy.RUNTIME)
描述当前这个注解是否能被子类对象继承
@Inherited
描述当前这个注解是否能被文档所记录
@Documented
注解里只能写 公有静态final的属性 和 公有的抽象的有返回值的方法
通常会省略固定的修饰符 ,如public,static,final,abstract
方法返回值只能是上面列举的几个
@Target({ElementType.FIELD,ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnno {
String name = "张三";
public static final String name1 = "张三";
String value();
public abstract String mess1();
}
7.如何使用注解
按照定义注解是的要求,将注解放置在应该放置的位置
使用注解,注解里有几个方法,就要传递几个参数
注解会将参数传递给使用的人
@MyAnno(mess="")
@MyAnno(value="",mess1="")
注解中着只有一个方法,且方法的名称是value时,可以简写为@MyAnno(""),否则必须写方法名
public void test() {
}