
注解的介绍
提到注解,我们会不由的想到注释,其实注解和注释不是一个东西,注释的作用就是解释代码,方便理解和阅读,说白了就是给程序员看的。而注解则不是,注解的作用比较大,可以进行编译检查、生成doc文档或者进行代码分析。 java语言中的类、方法、变量等都可以被标注。java标注可以通过反射获取标注内容,在编译器生成类文件时,标注可以被嵌入到字节码中。虚拟机可以保存标注内容,在运行时可以获取到标注内容。
java 预定义中的注解
- @Override: 重写或者实现父类或者接口中的方法时,会出现这个注解,强制格式检查
- @Deprecated 标注当前方法已经过时。
- @SuppressWarnings(“all”) 压制警告
java 中自定义注解
格式
// MyAnnotation1 自定义注解名,注意@
public @interface MyAnnotation1 {}
我们可以通过反编译看一下如何实现的

public @interface MyAnnotation2 {
//default 默认值
int id() default 1;
String name();
MyAnnotation1 annotation1();
//枚举类型
TypeEnum status();
//String 类型的数组
String[] hobbies();
}
//枚举类型TypeEnum
public enum TypeEnum{
A{1, “三杀了”},
B(2, “四杀了,我的五杀,五杀!!”),
C(3, "XXX已被终结,垃圾游戏,ALT + F4");
private int status;
private String msg;
TypeEnum(int status, String msg) {
this.status = status;
this.msg = msg;
}
//省略getter setter方法
}
定义完成之后,在使用的时候需要注意以下几点:
1.有属性的,在使用时应对属性进行赋值。
2.有默认值的(default)的可以赋值也可以不赋值,不进行赋值操作就是默认值
3.有且只有一个value(无论数据类型是什么)属性,或者除了value属性之外的其他属性都有默认值,那么在赋值的时候不需要 ‘属性 = 值’,直接可以给定数值。
4.一个方法可以有多个注解。
元注解
给予注解的解释,就是用来约束注解的。
- @Retention 说明这个注解的生命周期到哪,有三个取值
RetentionPolicy.SOURCE : 只在源码阶段保留,不参与代码的运行和解析,不保留在class文件里
RetentionPolicy.CLASS : 保留到编译进行的时候,不会被加载到虚拟机里
RetentionPolicy.RUNTIME : 可以加载到虚拟机里,参与代码执行,在程序运行的时候可以获取他们
- @Documented
将注解的元素可以包含到javadoc文档中
- @Target 标记这个注解是那种 java 成员,是方法,是类,还是属性等
ElementType.TYPE 当前注解可以用于类、接口声明
ElementType.METHOD 用于方法的声明位置
ElementType.FIELD 用于成员变量的声明位置
- @Inherited 标记这个注解是继承于哪个这注解类,就是说如果一个被@Inherited 修饰注解注解在一个父类上,那么他的子类也会有这个被@Inherited修饰的注解
最后

上面都是自己整理好的!我就把资料贡献出来给有需要的人!顺便求一波关注。学习我们是认真的,拿大厂offer是势在必得的。想了解点击一下java交流群哦
[java交流群](想了解更多点一下哦)
原文作者:0菜鸡小白0 原文链接:blog.csdn.net/weixin_4393…