Java注解总结
来源:互联网 发布:单片机最小系统是什么 编辑:程序博客网 时间:2024/05/18 17:42
什么是注解?
注解在Java SE5中被引入,可以提供用来描述程序所需要的信息,而这些信息可能是无法或很难用Java来表达的。即注解使我们能够以 将由编译期来测试和验证 的格式,存储有关程序的额外信息。
注解有什么用?
1. 注解是在实际的源代码级别保存所有的信息,享有编译期的类型检查保护
2. 如override注解,可以告诉编译期如何运行程序
3. 通过使用注解,我们可以将一些Java很难表达的信息保存在Java源代码中,并可以利用annotation API创建注解处理器,从而简化(或取代)配置文件。
JavaSE5内置了三种注解
// 重写父类的方法@Overridepublic String toString() {return super.toString();}// 抑制编译器警告//未使用不报错 unused//List非泛型不报错 unchecked@SuppressWarnings({"unused","unchecked"})private void save() {List list = null;}// 标记方法过时@Deprecatedprivate void save1() {}
创建自定义注解
注解将会编译成class文件
第一步:写元注解:
元注解:用来修饰注解的 注解
指定注解的可用范围:
ElementType枚举
@Target({
TYPE, 类声明
FIELD, 字段
METHOD, 方法
PARAMETER, 参数
CONSTRUCTOR, 构造器
LOCAL_VARIABLE 局部变量
PACKAGE 包声明
})
指定注解的声明周期
@Retention(RetentionPolicy.SOURCE) 注解只在源码级别有效,将被编译期丢弃
@Retention(RetentionPolicy.CLASS) 注解在字节码级别(class文件中)有效,但会被JVM丢弃 默认值
@Retention(RetentionPolicy.RUNTIME) 注解在运行期也保留,因此可以通过反射机制读取注解的信息
第二步:定义注解
注解属性要求
1.修饰为默认或public
2.不能有主体
3.要求元素不能有不确定的值,即元素要么具有默认值,要么在使用注解时提供元素
public @interface Author {/** * 注解属性 * 1. 修饰为默认或public * 2. 不能有主体 */String name();int age() default 30; // 3.带默认值的注解; 使用的时候就可以不写此属性值}
注解属性类型为数组:
public @interface MySuppressWarning {String[] value() default {"unused ","unchecked"};}//使用:@Author({"",""})public void save() {}
创建注解处理器 使用注解
注解相关的API
包名:java.lang.reflect
接口 AnnotatedElement
已知实现类:
Class,Constructor, Field, Method,
<T extends Annotation>
T
getAnnotation(Class<T> annotationClass)
如果存在该元素的指定类型的注释,则返回这些注释,否则返回 null。
Class类,Method类,Field类都实现了这个接口,实现了这个方法。getAnnotation()方法返回指定类型的注解对象。如果没有对应的注解,则返回null。这样就可以获得注解值从而加以使用。
使用注解的一个例子:使用注解反射实现BaseDao
- java注解-->总结
- java总结(18)注解
- JAVA注解总结
- JAVA注解总结
- Java 注解总结
- Java注解总结
- java注解总结
- 学习java 注解总结.
- Java注解总结
- Java的注解总结
- 【java总结】注解Annotation
- java注解总结
- java注解总结
- java中的注解总结
- java,spring 注解总结
- Java注解知识点总结
- Java 注解总结
- Java 注解总结
- 【原创】东方耀reactnative 视频12之-view组件
- Java-面向对象(基础篇)--static关键字
- Python tornado
- 快学Big Data
- Reducing the Dimensionality of Data with Neural Networks:神经网络用于降维
- Java注解总结
- LibRIL 运行机制
- enum 枚举的作用
- android 动态加载框架 快速使用
- Hadoop的容错性
- python 操作MySQL数据库
- C++学习笔记4--表达式
- CI框架教程1——优化验证码机制(或验证码辅助函数)
- CRC的校验原理及硬件、软件算法实现