Java注解总结,java注解
Java注解总结,java注解
什么是注解?
注解在Java SE5中被引入,可以提供用来描述程序所需要的信息,而这些信息可能是无法或很难用Java来表达的。即注解使我们能够以 将由编译期来测试和验证 的格式,存储有关程序的额外信息。
注解有什么用?
1. 注解是在实际的源代码级别保存所有的信息,享有编译期的类型检查保护
2. 如override注解,可以告诉编译期如何运行程序
3. 通过使用注解,我们可以将一些Java很难表达的信息保存在Java源代码中,并可以利用annotation API创建注解处理器,从而简化(或取代)配置文件。
JavaSE5内置了三种注解
// 重写父类的方法
@Override
public String toString() {
return super.toString();
}
// 抑制编译器警告
//未使用不报错 unused
//List非泛型不报错 unchecked
@SuppressWarnings({"unused","unchecked"})
private void save() {
List list = null;
}
// 标记方法过时
@Deprecated
private 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,
|
getAnnotation(Class<T> annotationClass) |
Class类,Method类,Field类都实现了这个接口,实现了这个方法。getAnnotation()方法返回指定类型的注解对象。如果没有对应的注解,则返回null。这样就可以获得注解值从而加以使用。
使用注解的一个例子:使用注解反射实现BaseDao
相关文章
- 暂无相关文章
用户点评