您的位置:首页 > 编程语言 > Java开发

Java注解

2016-03-15 12:13 453 查看
注解

    类似于批注,是对源代码加入描述;JDK5.0引入,不同于注释(注释在编译时被忽略)。

    注释,就是说明。Java的注释,可以附加在package(包)、class(类)、method(成员变量)

    和field (成员变量)等上面,相当于给它们添加了额外的辅助信息。

其原理是通过反射机制/反省。通过反射可以获得类、对象的信息(元数据)。

常见的Java内建注释

@Deprecated用于修饰已经过时的方法。

@Override用于修饰此方法覆盖了父类的方法(而非重载)。加上后编译器强制检查方法名。

@SuppressWarnings用于通知java编译器禁止特定的编译警告。

Annotation工作方式

        annotation并不直接影响代码语义,但是它能够工作的方式被看作类似程序的工具或者类库,

    它会反过来对正在运行的程序语义有所影响。annotation可以从源文件、class文件或者以在

    运行时反射的多种方式被读取。

        当然annotation在某种程度上使javadoc tag更加完整。一般情况下,如果这个标记对

    java文档产生影响或者用于生成java文档的话,它应该作为一个javadoc tag;否则将作为一个annotation。

Annotation使用方法

1、interface 关键字前有@。

2、每个方法声明定义为一个元素。

3、方法声明不能包含有参数和throws子句。

4、方法返回类型只能是: 基本类型, String, Class,enums, annotations, 以及它们的数组。

5、方法可以定义缺省值。

    

自定义注解

    目标:@Target  它用来修饰谁?

           ElementType

           类型

           字段

           方法

           参数

           保留规则 @Rectention(此括号可选3个值)设置该自定义注解保留的策略

用关键字@interface定义一个注解标记,使用@interface关键字实际上的意思就是

该接口继承自java.lang.annotation.Annotation接口。

如:    

import java.lang.annotation.*;

@Target(ElementType.METHOD)         //设置目标;即该  自定义注解用于修饰谁

@Retention(RetentionPolicy.CLASS)//设置保留策略;即  该自定义注解保留到编译后的字节码文件中

public @interface Path {

   //类型    该注释属性名();

    String name() default "";    //name属性值默认为""

    

    /**

     * 是否可用,默认可用

     * 意思就是在Path注解中可以含有属性名为ebable,此属性的类型是boolean类型。客户端使用的时候可以根据需要自己指定相关的属性值。如果客户端不指定值,默认值是true

     */

    boolean enable() default true;

    

    

}

元注释,也是一种注释,只不过有其特殊性,具体表现在它是一种针对注释类型的注释。Java中共有4种元注释,分别为Retention、Target、Documented和Inherited。

    

    @Retention(RetentionPolicy.RUNTIME)

    加载在VM中,在运行时进行映射(注解的生命周期出现在哪里看源码),将使用该注解类的信息值保持到真正的客户端运行时环境。

    @Target(ElementType.METHOD)

    限定此annotation只能标示方法,描述元注解可以出现的地方

    @Target注解,它代表着注解的修饰范围,类型是java.lang.annotation.ElementType枚举类型。

    public enum ElementType {

    TYPE,//可以修饰类、接口、枚举、注解

    FIELD,//可以修饰成员变量

    METHOD,//可以修饰方法

    PARAMETER,//可以修饰参数

    CONSTRUCTOR,//可以修饰构造方法

    LOCAL_VARIABLE,//可以修饰局部变量

    ANNOTATION_TYPE,// 可以修饰Annotation

    PACKAGE//可以修饰包

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 注解