Java注解(annontation)简说

Java注解简说

一、Annontation简介:

        Annontation是Java5开始引入的新特征。中文名称通常叫注解。java

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

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

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

 

二、默认的三个Annotation类型: 

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

 

三、怎样设计本身的Annotation

一、例子:

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关键字。工具

二、注解简介:

@Target:

@Target里面的ElementType是用来指定Annotation类型能够用在哪一些元素上测试

①TYPE(类型  TYPE(类型)是指能够用在Class,Interface,Enum和Annotation类型上)spa

②FIELD(应用在属性.net

③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 之类的工具处理, 因此注解类型信息也会被包括在生成的文档中。

例如:

一、写注解类

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

二、写应用类

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'");
	}
}

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

相关文章
相关标签/搜索