标签:
java中的注解(Annotation),也叫元数据。是Java 5以后版本引入的一个特性。
注解与类、接口、枚举是在同一个层次,可以用来标注包、类、字段、方法、局部变量、方法参数等元素,达到对这些元素的描述和说明。
注解是可以允许jvm在运行中读取它,这一点与注释完全不同。并且包含多种加载策略,可以灵活配置。
了解注解、注释区别看这里:注解、注释有什么区别
如何自定义注解看这里:如何使用注解
注解包含3中可配置的加载策略(RetentionPolicy),根据不同的需要进行不同的配置,具体如下:
public enum RetentionPolicy {
// 此类型会被编译器丢弃
SOURCE,
// 此类型注解会保留在class文件中,但JVM会忽略它,默认策略
CLASS,
// 此类型注解会保留在class文件中,JVM会读取它
RUNTIME
}
注解主要功能有以下几点:
编写文档
通过代码里标识的元数据生成文档,这一点与注释类似。
代码分析
通过代码里标识的元数据对代码进行分析,一般使用反射获取注解信息。
编译检查
通过代码里标识的元数据让编译器能够实现基本的编译检查,例如方法覆盖@Override。
jdk提供了若干内置注解,常见的如下:
@Override
它用来对覆盖父类方法、实现接口方法进行标记,如果被标记的方法并没有实际覆盖父类方法,则编译器会发出错误警告。
例子:
public class SuperTest {
public String tostring() {
return "父类";
}
}
public class Test extends SuperTest {
@Override
public String tostring() {
return "子类注解";
}
}
@Deprecated
它用来标记过期方法、不推荐使用方法。对于某些已经过期、不推荐使用的方法,但又不能直接删除(有其他地方仍使用),我们会使用@Deprecated进行标记,当使用这些方法时,会在编译时进行提示。
例子:
public class Test {
public static void main(String[]args) {
// 使用DeprecatedClass里声明被过时的方法
DeprecatedClass.DeprecatedMethod();
}
}
class DeprecatedClass {
@Deprecated
public static void DeprecatedMethod() {
}
}
@SuppressWarnings
它用来标记不想被提示的警告,警告类型可以通过参数控制,具体如下:
deprecation,使用了过时的类或方法时的警告
unchecked,执行了未检查的转换时的警告
fallthrough,当Switch程序块直接通往下一种情况而没有Break时的警告
path,在类路径、源文件路径等中有不存在的路径时的警告
serial,当在可序列化的类上缺少serialVersionUID定义时的警告
finally,任何finally子句不能正常完成时的警告
all,关于以上所有情况的警告
例子:
public class Test {
public static Listlist = newArrayList();
@SuppressWarnings("unchecked")
public void add(String data) {
list.add(data);
}
}
标签:
原文地址:http://blog.csdn.net/ooppookid/article/details/51761368