码迷,mamicode.com
首页 > 编程语言 > 详细

JAVA 注解

时间:2014-11-24 16:59:31      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:blog   io   ar   os   使用   sp   java   for   strong   

 

使用一种对代码级别的说明,在JDK5.0引入支持的新特性,与类、接口、枚举同属一个层次。声明使用在包、类、字段、方法、局部变量、方法参数等前面,对这些元素进行说明注释。可以作为编译检查、生成说明文档、代码分析等功能。 

JDK提供的基本注解

  • @SuppressWarnings 阻止编译器发出的某些警告信息
    1. deprecation:使用了过时的类或方法时的警告  
    2. unchecked:执行了未检查的转换时的警告  
    3. fallthrough:当switch 程序块直接通往下一种情况而没有break 时的警告  
    4. path:在类路径、源文件路径等中有不存在的路径时的警告  
    5. serial:当在可序列化的类上缺少 serialversionuid 定义时的警告  
    6. finally:任何 finally 子句不能正常完成时的警告  
    7. all:关于以上所有情况的警告
  • @Deprecated 标记某个过时的类或方法
  • @Override 标记重写父类的方法

元注解

  1. @Retention
    标记该注解的声明周期,具有如下参数:

    • RetentionPolicy.SOURCE:指定注解只保留在一个源文件中
    • RetentionPolicy.CLASS:指定注解只保留在一个class文件中(默认值)
    • RetentionPolicy.RUNTIME:指定注解可以保留在程序运行期间
  2. @Target 
    标记该注解可以被声明在哪些元素前,具有如下参数:

    • ElementType.TYPE:该注解只能被声明在一个类前
    • ElementType.FIELD:该注解只能被声明在一个类的字段前
    • ElementType.METHOD:该注解只能被声明在一个类的方法前
    • ElementType.PARAMETER:该注解只能被声明在一个方法参数前
    • ElementType.CONSTRUCTOR:该注解只能声明在一个类的构造方法前
    • ElementType.LOCAL_VARIABLE:该注解只能声明在一个局部变量前
    • ElementType.ANNOTATION_TYPE:该注解只能声明在一个注解类型前
    • ElementType.PACKAGE:该注解只能声明在一个包名前
  3. @Document 
    标记该注解可以被javadoc工具提取成文档。

  4. @Inherited 
    标记该注解具有继承性,如果某类该注解修饰,那么其子类自动使用该注解修饰。

定义注解

@Retention(RetentionPolicy.RUNTIME)
public @interface MyTag {

    //定义字段,并指定默认值
    String name() default "java";

    int age() ;
}

默认情况下,注解可以修饰任何程序元素,包括类、接口、方法等。

使用注解

@MyTag(age =10)
public class AnnotationTest {

}

未赋默认值的字段,使用注解必须赋值。

提取注解信息

通过java.lang.reflect包下的AnnotatedElement,获取注解的程序元素,主要有如下实现类:Class、Constructor、Field、Method、Package

AnnotatedElement接口主要提供以下方法获取注解信息:
getAnnotation(Class<Annotation> annotationClass):获取指定注解,不存在则返回null
getAnnotations():获取程序元素上存在的所有注解
isAnnotationPresent(Class<? extends Annotation> annotationClass):判断该元素是否存在指定注解

import java.lang.annotation.Annotation;

public class Main {

    public static void main(String[] args) {

        AnnotationTest test = new AnnotationTest();
        Annotation[] annotations = test.getClass().getAnnotations();
        for (Annotation annotation : annotations) {
            System.out.println(annotation.toString());
        }
    }
}

 输出结果:@com.annotation.MyTag(name=java, age=10) 

JAVA 注解

标签:blog   io   ar   os   使用   sp   java   for   strong   

原文地址:http://www.cnblogs.com/bennyyuan/p/4118758.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!