Java系列之注解
原文发于微信公众号jzman-blog,欢迎关注交流。Java 注解(Annotation)又称之为 Java 标注、元数据,是 Java 1.5 之后加入的一种特殊语法,通过注解可以标注 Java 中的类、方法、属性、参数、包等,可以通过反射原理对这些元数据进行访问,注解的使用不会影响程序的正常运行,只会对编译器警告等辅助工具产生影响。 注解功能编译器可以使用注解来检测错误和取消警告;使用注解可以生成特定代码,如 ButtferKnife 使用注解简化 findViewById等;某些注解可以在运行时进行检查和操作。定义注解注解的定义使用 @interface 作为关键字,实际上表示自动继承了 java.lang.annotation.Annotation 接口,定义格式参考如下: @元注解public @interface AnnotationName{ //配置参数(参数类型 参数名称()) String name() default "hello";}配置参数里面的类型包括基本类型、String、class、枚举以及相关类型的数组,可以使用 default 设置配置参数的默认值,定义一个注解具体如下: @Target(value = {ElementType.FIELD})@Retention(RetentionPolicy.RUNTIME)public @interface TestDefineAnnotation { String[] name() default "test";}内置注解@Override@Deprecated@SuppressWarnings下面是上面三个内置注解的声明: //表示当前的方法将覆盖超类中的方法,编译时进行格式检查@Target(ElementType.METHOD)@Retention(RetentionPolicy.SOURCE)public @interface Override {}//表示一个类或者是方法不再建议使用,将其标记为过时,但还是可以使用@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE})@Retention(RetentionPolicy.SOURCE)public @interface SuppressWarnings { String[] value();}//表示关闭不当的编译器警告信息@Documented@Retention(RetentionPolicy.RUNTIME)@Target(value={CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PACKAGE, PARAMETER, TYPE})public @interface Deprecated {}根据对上面三个注解的声明来看,@SuppressWarnings 中定义了一个数组,这个数组表示在该注解上具体的目标是那些,如可在 SuppressWarnings 上使用的值,常用的具体如下: deprecation:使用了过时的类或方法时的警告unused:有未使用的变量时的警告unchecked:执行了未检查的转换时的警告fallthrough:当 switch 程序块直接通往下一种情况而没有 break 时的警告path:在类路径、源文件路径等中有不存在的路径时的警告serial:当在可序列化的类上缺少serialVersionUID 定义时的警告finally :任何 finally 子句不能正常完成时的警告all:关于以上所有情况的警告下面看一个案例,具体如下: ...