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

Java注解(annontation)简说

2017-07-27 00:00 190 查看
摘要: 注解参数简介

Java注解简说

1、Annontation简介:

Annontation是Java5开始引入的新特征。中文名称一般叫注解。

它提供了一种安全的类似注释的机制,用来将任何的信息或元数据(metadata)与程序元素(类、方法、成员变量等)进行关联。

更通俗的意思是为程序的元素(类、方法、成员变量)加上更直观更明了的说明,这些说明信息是与程序的业务逻辑无关,并且是供指定的工具或框架使用的。

Annontation像一种修饰符一样,应用于包、类型、构造方法、方法、成员变量、参数及本地变量的声明语句中。

2、默认的三个Annotation类型:

@Override: 只能用在方法之上的,用来告诉别人这一个方法是改写父类的。
@Deprecated: 建议别人不要使用旧的API的时候用的,编译的时候会用产生警告信息,可以设定在程序里的所有的元素上。
@SuppressWarnings:这一个类型可以来暂时把一些警告信息消息关闭。

3、怎样设计自己的Annotation

1、例子:

package annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
//作用范围
@Target(ElementType.TYPE)
//RetentionPolicy.RUNTIME这种类型的Annotations将被JVM保留,所以他们能在运行时被JVM或其他使用反射
@Retention(RetentionPolicy.RUNTIME)
//注解doc文档信息
@Documented
public @interface Description {
String value();
}

@interface是一个关键字,在设计annotations的时候必须把一 个类型定义为@interface,而不能用class或interface关键字。

2、注解简介:

@Target:

@Target里面的ElementType是用来指定Annotation类型可以用在哪一些元素上

①TYPE(类型 TYPE(类型)是指可以用在Class,Interface,Enum和Annotation类型上)

②FIELD(应用在属性)

③METHOD(应用在方法)

④PARAMETER(应用在参数)

⑤CONSTRUCTOR(应用在构造函数)

⑥LOCAL_VARIABLE(应用在局部变量)

⑦ANNOTATION_TYPE(应用在注解)

⑧PACKAGE(应用在包)

注:如果Annotation类中没有加@Target注解,则默认可以作用在以上所有。

此注解意义就是指定注解的应用范围。

@Retention:

@Retention(保留)注解说明,这种类型的注解会被保留到哪个阶段. 有三个值:
①RetentionPolicy.SOURCE —— 这种类型的Annotations只在源代码级别保留,编译时就会被忽略
②RetentionPolicy.CLASS —— 这种类型的Annotations编译时被保留,在class文件中存在,但JVM将会忽略
③RetentionPolicy.RUNTIME —— 这种类型的Annotations将被JVM保留,所以他们能在运行时被JVM或其他使用反射机制的代码所读取和使用

一般默认设置为: @Retention(RetentionPolicy.RUNTIME) ,这样在程序运行时候就能发现到这个注解。

@Documented:

@Documented 注解表明这个注解应该被 javadoc工具记录.

默认情况下,javadoc是不包括注解的,但如果声明注解时指定了 @Documented,则它会被 javadoc 之类的工具处理, 所以注解类型信息也会被包括在生成的文档中。

例如:

1、写注解类

@Target(ElementType.METHOD)
// RetentionPolicy.RUNTIME —— 这种类型的Annotations将被JVM保留,所以他们能在运行时被JVM或其他使用反射
@Retention(RetentionPolicy.RUNTIME)
// 注解doc文档信息
@Documented()
public @interface UseDocumented {
String Document();
}

2、写应用类

public class UseAnnotations {
public static void main(String arg[]) {
new UseAnnotations().doSomeRetention();
new UseAnnotations().doSomeDocumented();
}

@UseDocumented(Document = "保留注解信息测试")
public void doSomeRetention() {
System.out.printf("测试注解类型 'Retention'");
}

@UseDocumented(Document = "Hello document")
public void doSomeDocumented() {
System.out.printf("测试注解类型 'Documented'");
}
}

3、生成doc,查看显示效果

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