1.简单理解
- 给数据或者代码加上属性
2.简单使用
定义注解
- 最常用的方式
@Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) public @interface CommonAnnotation { /** * 名字 * @return */ String name(); }
- @Retention(RetentionPolicy.RUNTIME),直接cv大法,表示我们运行的时候注解还在,很少需要使用到其他两种情况
- @Target(ElementType.METHOD),直接cv大法,表示这个注解将用于注解方法,编译器会帮我们检查,如果报错就去添加或者替换成我们需要的类型
- 定义一个注解
- 关键字: @interface
- 元注解:@Retention、@Target、@Inherited、@Documented
- 字段,写成一个抽象方法的形式
元注解
- @Retention
- 用来指定注解的存活期
- 值:SOURCE、CLASS、RUNTIME
- 分别表示:
- source 这个注解除了源文件会存在就没了、
- class 这个注解比上个命长点,能扛到编译后,运行时就没了、
- runtime 这个注解会存活到运行时,命最长
- @Target
- 用来说明这个注解可以用来注释哪些地方,例如:类、方法、字段、参数、注解等等
- 很简单,根据需求来就好了
- 那么有个问题,如果我声明用于方法,但是我把注解写到类上会报错吗?
实践证明,编译器会帮我报错出来,所以,乱写就行了,有报错再纠错
- @Inherited
- 一般用来那些修饰类的注解,那么他的子类可以继承这个注解
- 注解继承说得这个,注解A用这个注解(@Inherited)标识了,那么类ObjectA表示了注解A,类ObjectB直接继承ObjectA就可以获得注解A
- 仅此而已,也是很有用的
- @Documented
- 标识哪些类在生成文档时,能上文档
标准注解
- @Override
重写 、覆盖某个方法 - @Deprecated
方法或者类废弃了 - @SuppressWarnings
标识这个代码安全,不要给我警告个不停
todo
- spring的组合注解
- 阅读《java编程思想》的相关章节
- 阅读《java核心卷》的相关章节
- 列举例子
- 写出自己的理解
- 了解并写个类似lombok的demo
- 根据@Documented生成一个jdk文档来看看