注解

【参考资料】

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

 

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

 

定义

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

@Target(ElementType.METHOD)

@Retention(RetentionPolicy.SOURCE)

public @interface Override {

}

 

在定义的时候还可以指定他的参数,并且可以使用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 @interface CustomAnnotation {

     

      String studentName() default "shadowfaxghh";

      int age() default 0;

      int id() default -1;

     

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

}

 

使用

 

public class Test {

 

       @CustomAnnotation

       public void test1(){

       }

      

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

       public void test2(){

       }

}

 

解析

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

 

 

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

@Override


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

@Override

public String toString(){

       return "";

}

 

@Deprecated


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

@Deprecated

public static void test(){

}

 

public static void 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"})

       public static void test2(){

              List list=new ArrayList();

       }

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值