关于注解
来源:互联网 发布:绝地求生罗技g502编程 编辑:程序博客网 时间:2024/05/17 08:15
注解
概述
注释:// /**/
注解:给程序(编译器,类加载器,JVM)看的
注解的作用:在一些使用的场景中代替实现轻量级的配置
(副作用:增加了了耦合度)
常见注解
@Override
- 重写父类方法.给编译器看,在编译时雁阵该方法是否符合重写的规则.
Override public String toString(){ return super.toString(); }
@SuppressWarnings
- 抑制编译器
@SuppressWarnings("unused") public void lol(){ int x=8; }
@Deprecated
-表示方法已经过时
@Deprecated public static void sleep(){ }
注解的开发流程
- 定义注解->反射注解->使用注解
- @注解名称[(属性名 1=值,属性名 2=值…….)]
- 使用时可以附属性赋值,也可以没有属性赋值
自定义注解
public @interface test {}
- 底层帮我们自动实现了 java.lang.annotation.Annotatino
- 定义注解的时候只能使用@interface来定义,不能手实现
注解的属性
1. 和接口中的方法定义类似:public配型 属性名称() [default…];可以default指定默认值.
2. 如果属性定义是没有指定默认值,那么对应注解使用的时候必须为该属性赋值.
3. 如果某些场景,使用注解是必须为其中某一属性赋值,赋值完成之后该注解才可以被使用,那么不要使用default指定默认值.
4. 特殊属性value,单独危改属性赋值是,”value=”可以省略;除了为value赋值以外,同时还需要为其他属性赋值,这是”value=”不可以省略.
5. 属性的类型通常是巴中基本数据类型.Class类/枚举/String.
6. 为数组类型的属性赋值是,如果值只有一个,那么赋值是”{}”可以省略.
源生注解
- 在定义注解是,如果没有使用Target指定,默认都可以使用.如果使用了Target指定使用的位置,那么该注解只能在他所指定的位置使用.
@Retention
@Retention(RetentionPolicy.SOURCE):表示注解的保留域.
.java -> .class -> 加载至内存 -> 运行
SOURCE 给编译器看的,编译器看完后不再保留.生成的.class字节码文件中不再保留该类型的注解.
CLASS 给类加载器看的,在类加载是根据相关的注解做一些引导操作.编译时(.class字节码文件中保留),类加载时使用后丢弃.
RUNTIME 给JVM看的.编译器编译后保留,类加载器加载后保留,JVM执行时保留.
@Documented
- 如果在注解上定义@Documented则会在生成的javadoc中显示所使用的注解
反射注解
前提条件:注解要想被反射的到,注解的保留域必须指定为RUNTIME,否则反射不到。
jdk中提供的注解反射接口:AnnotatedElement,提供了以下方法:
xxx.getClass.getAnnotation(Class<T> annotationClass);
返回直接存在于此元素(类或接口、方法、…)上的所有注解。
boolean isAnnotationPresent(Class<? extends Annotation> annotationClass)
如果指定类型的注释存在于此元素上,则返回 true,否则返回 false。
阅读全文
0 0
- 关于注解
- 关于注解
- 关于注解
- 关于注解
- 关于java注解
- 关于spring注解
- 关于@interface 自定义注解
- 关于 java注解 问题
- 关于Spring 注解 IOC
- 关于注解代理应用
- 关于spring的注解
- 关于struts2的注解
- 关于Hibernate注解说明
- 2.2关于各种注解
- 关于java注解
- 关于spring常用注解
- 关于spring注解配置
- 关于Spring的注解
- Spring boot Redis 乱码
- iOS学习笔记-144.网络04——NSURLConnection01_相关基础
- 单例模式struts2连接数据库
- 'range' object doesn't support item deletion
- 微信-App支付 java服务器端
- 关于注解
- HDU 3549 Flow Problem(网络流之最大流模板题)
- logistic回归改进
- 从内存中加载并运行exe(两种方法)
- android 唯一uuid(Token)
- Python中把协程变成任务方法详解
- C++ 类和对象(构造和析构)
- HDU 2177 取(2堆)石子游戏题解
- java学习笔记--基础语法