注解

来源:互联网 发布:单片机驱动电机电路 编辑:程序博客网 时间:2024/05/21 11:06

【参考资料】

注解(Annotation)自定义注解入门http://www.cnblogs.com/peida/archive/2013/04/24/3036689.html

 

个人理解,注解是作用于对象所属类的Class对象,而不是作用于某个具体的对象

 

定义

可以使用public @interface XXX来定义一个注解类型,如下所示。在定义注解的时候,需要使用到元注解,关于元注解的东西放到下篇再讲。

@Target(ElementType.METHOD)

@Retention(RetentionPolicy.SOURCE)

public@interfaceOverride {

}

 

在定义的时候还可以指定他的参数,并且可以使用default来指定默认参数值,如下所示。

1、注解参数可以使用的类型有

所有基本数据类型(int,float,boolean,byte,double,char,long,short)

String类型

Class类型

enum类型

Annotation类型

  以上所有类型的数组

2、只能使用public修饰符,或不写

3、如果只有一个参数,一般该参数名为value,并且在后面使用的时候可以省略写value=,如@SuppressWarnings(value="all")省略写成@SuppressWarnings("all")

@Target({ElementType.METHOD, ElementType.TYPE})

@Retention(value = RetentionPolicy.RUNTIME)

public@interfaceCustomAnnotation {

     

     String studentName() default"shadowfaxghh";

     int age()default 0;

     int id()default -1;

     

     String[] schools() default {"人民路小学","建设路小学"};

}

 

使用

 

publicclass Test {

 

      @CustomAnnotation

      publicvoid test1(){

      }

      

      @CustomAnnotation(age=19, studentName="", schools={"XXX"})

      publicvoid test2(){

      }

}

 

解析

注解分为编译时注解和运行时注解,用途和解析也不相同,参见后面文章。

 

 

此外,Java当中提供了3个内置注解,这我们还经常遇到,如

@Override


表示一个方法打算重写父类中的另一个方法

@Override

public String toString(){

      return"";

}

 

@Deprecated


表示已经过时,不鼓励使用这样的元素

@Deprecated

publicstaticvoidtest(){

}

 

publicstaticvoid main(String[]args) {

      test();

}

 

@SuppressWarnings


用于抑制编译时的警告信息,参数value可选的值有

1.deprecation:使用了不赞成使用的类或方法时的警告;

2.unchecked:执行了未检查的转换时的警告,例如当使用集合时没有用泛型 (Generics)来指定集合保存的类型;

3.fallthrough:当 Switch程序块直接通往下一种情况而没有 Break 时的警告;

4.path:在类路径、源文件路径等中有不存在的路径时的警告;

5.serial:当在可序列化的类上缺少serialVersionUID定义时的警告;

6.finally:任何 finally子句不能正常完成时的警告;

7.all:关于以上所有情况的警告。

      @SuppressWarnings("all")

//   @SuppressWarnings(value={"unchecked", "deprecation"})

      publicstaticvoid test2(){

             List list=new ArrayList();

      }

 

 

原创粉丝点击