java之注解

注解使用

一、java的常用注解

 @Override                             重写覆盖方法

 @SuppressWarnings        压住警告可用于类和方法

 @Deprecated                      声明类或方法过时


 注解@Override用在方法上,当我们想重写一个方法时,在方法上加@Override,当我们方法的名字出错时,编译器就会报错。

 

 注解@SuppressWarnings用来压制程序中出来的警告,比如在没有用泛型或是方法已经过时的时候。

  注解@Deprecated,用来表示某个类的属性或方法已经过时,不想别人再用时,在属性和方法上用@Deprecated修饰。

 

二、自定义注解

   I. 元注解 

     1、@Target   表明注解的作用域

      作用域被定义为枚举类型ElementType

     ElementType.ANNOTATION_TYPE      作用在注解上

     ElementType.CONSTRUCTOR            作用在构造方法

     ElementType.FIELD                               作用在属性上

     ElementType.LOCAL_VARIABLE       作用在本地变量

     ElementType.METHOD                         作用在方法

     ElementType.PACKAGE                       作用在包

     ElementType.PARAMETER                 作用在参数

     ElementType.TYPE                                 作用在类、接口或枚举类型

 注解@Retention可以用来修饰注解,是注解的注解,称为元注解。


   2、@Retention

   注解有一个属性RetentionPolicy 

    RetentionPolicy是一个枚举类型有3个值
      RetentionPolicy.CLASS      表示注解的信息被保留在class文件
      RetentionPolicy.SOURCE    不会留在class文件中,注解的信息只会留在源文件
      RetentionPolicy.RUNTIME  注解的信息被保留到运行时,所以他们可以用反射的方式读取。


   3、@Documented

     注解表明制作Javadoc时,是否将注解信息加入文档。如果注解在声明时使用@Document的,则在制作Javadoc时注解信息会加入javadoc

   

   4、@Inherited

     注解表示注解是否被子类继承。默认情况是不会继承。当在注解声明时时有@Inherited,则注解将会被该注解的类的子类所继承。


   II、定义注解

定义新的Annotation类型使用@interface关键字(在原有interface关键字前增加@符号)。定义一个新的Annotation类型与定义一个接口很像,例如:

public @interface Test{
}

定义完该Annotation后,就可以在程序中使用该Annotation。使用Annotation,非常类似于public、final这样的修饰符,通常,会把Annotation另放一行,并且放在所有修饰符之前。例如:

@Test
public class Person{
}


  III、定义注解的成员变量
Annotation只有成员变量,没有方法。Annotation的成员变量在Annotation定义中以“无形参的方法”形式来声明,其方法名定义了该成员变量的名字,其返回值定义了该成员变量的类型。例如:

public @interface MyAnnotation{
    string value();
    int age();
}

示例中定义了2个成员变量,这2个成员变量以方法的形式来定义。


 

    III、注解参数类型

   注解参数必须是所有基本类型,包括(int, float, boolean), String, Class, enum, Annotation, 以及以上类型的数组


    IV、注解参数赋值

    注解的参数要么在定义是赋值,要么在使用时赋值。如果注解中定义参数value,并且在使用时,value是唯一的需要赋值的参数,则无需指出参数名字,直接把参数值填在括号里。

@MyAnnonation(value="amethod",count=2)
public void aMethod(){
} 
@Target(ElementType.METHOD)            //注解作用在方法
@Retention(RetentionPolicy.RUNTIME)    //注解保留到运行时
public @interface MyAnnonation  
{  
 String value() ; 
 int count() default 1;
}
@MyAnnonation("method")
public void method(){
}  

RetentionPolicy.RUNTIME 可以让你从JVM中读取Annotation注解的信息,以便在分析程序的时候使用.


@MyAnnonation(value="amethod",count=2)
public void aMethod(){
} 
@Target(ElementType.METHOD)            //注解作用在方法
@Retention(RetentionPolicy.RUNTIME)    //注解保留到运行时
public @interface MyAnnonation  
{  
 String value() ; 
 int count() default 1;
}
@MyAnnonation("method")
public void method(){
}  

原文地址:https://www.cnblogs.com/maokun/p/6710828.html