注解的作用有:
1.用来充当注释的作用(仅仅是一个文字的说明) 如@Deprecated表示已过期,不再建议使用
2.用来做代码的检测(验证) ,即检测此方法是否是一个重写的如@Override。
3.可以携带一些信息(内容) 比如以往我们可以使用文件.properties.xml注解来携带信息
4.Java中有一写写好的注解供我们直接使用的有:
a.@Depreacted 用来说明方法是废弃的
b.@Override
c.@SuppressWarnings(信息) 该注解实现代码如下:
默认该注解里面接收的参数是Strin[],即如果数组内的元素有多个时,就需要写成@SuppressWarning({"","",""}),如果只有一个元素时,则只需要写成@SuppressWarnings("unused")
@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE})
@Retention(RetentionPolicy.SOURCE)
public @interface SuppressWarnings {
String[] value(); // String数组
}
serial:指明类实现了序列化接口,不添加序列化ID号如:
@SuppressWarnings("serial")
public class Annotation implements Serializable{}
5.注解中可以携带信息 可以不携带
信息不能随意写 信息的类型只能是如下几种类型:
a.基本数据类型
b.String类型
c.枚举类型enum
d.注解类型@
e.数组类型[] 数组的内部需要是如上的四种类型
6.自己如何定义一个注解类型?
a.如何创建自己的一个注解类型,可以使用@interface定义一个新的注解类型
注意:
a.注解的写法跟接口非常相似,我们可以利用接口的特点来记忆注解,
注解里可以描述:公有的静态的常量属性如public static final,不过这种情况很少见,因为我们大多情况下定义注解是为了灵活性,而final修饰的常量不可修改,则不符合。
b.可以描述public abstract的方法,可以通过方法要求返回值返回五种类型。
3.定义了这样之后,这个注解还不能被外部使用,还需要加上元注解(需要利用java提供好的注解来说明)
不能使用的:
public @interface myAnnotation {
String test();
}
能够使用的:
@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE})
@Retention(RetentionPolicy.RUNTIME)
public @interface myAnnotation {
String[] value default "xiao"; // 默认给个初始值,外部引用这个注解时当没有赋值时则默认就是使用这个值,如外部类中有个属性头顶加上:
@MyAnnotatino()
private String name;
}
扩展:元注解有以下几种内容:
1.@Target描述当前的这个注解可以防止在哪里使用如:type(类),FIELD(属性),METHOD(方法),CONSTRUCTOR(构造方法)
2.@Retention 描述当前的这个注解存在什么作用域中的:源代码文件--》编译--》字节码文件--》加载--》内存执行
@Retention(RetentionPolicy.SOURCE)表示只是在源代码阶段,,只是做个解释说明而已,
@Retention(RetentionPolicy.RUNTIME)表示在运行时的作用域,一般用到使用时用到注解
浙公网安备 33010602011771号