java 注解学习笔记

来源:互联网 发布:abbyy finereader mac 编辑:程序博客网 时间:2024/06/06 06:36
1. @Override——指示被标记的方法必须去重写超类中的某个方法,如果不重写,编译器将会给出错误
    (可以注释掉@Override 然后看一下运行结果)
public class Test {    public static void main(String[] args) {        Cat cat =new Cat();        cat.saySomething();    }}class Animal{    void  saySomething(){        System.out.println("Animal talking");    }}class  Cat extends  Animal{    @Override    void  saySomething(){        System.out.println("meow....");    }}



2. @Deprecated——当我们希望编译器知道某一方法不建议使用时,我们应该使用这个注解。Java在javadoc 中推荐使用该注解,我们应

该提供为什么该方法不推荐使用以及替代的方法。

  class Tset{

@Deprecated

public void doSomething(){}

public void doNewSomething(){}

}

  编译器警告doSomething()方法已经被废弃。为了在类中标记处不希望开发人员在将来的代码中不再使用任何的方法,同时保证已有的代码不出现问题,

 就需要使用以上的注解。



3. @SuppressWarnings——这个仅仅是告诉编译器忽略特定的警告信息,谨慎使用该注解,可以防止编译器输出过多臃肿的信息


这里有四种类型的元注解:



1. @Documented —— 指明拥有这个注解的元素可以被javadoc此类的工具文档化。这种类型应该用于注解那些影响客户使用带注释的元
素声明的类型。如果一种声明使用Documented进行注解,这种类型的注解被作为被标注的程序成员的公共API。


2. @Target——指明该类型的注解可以注解的程序元素的范围。该元注解的取值可以为TYPE,METHOD,CONSTRUCTOR,FIELD等。如果Target
元注解没有出现,那么定义的注解可以应用于程序的任何元素。
@Target(ElementType.METHOD)
@interface Task{
String description
}
public class CustomAnnection{
@Task(description="Assign ID",estimatedHours=0,additionalNote="The IDs are available from IRS")
private int taxID;
@WorkInProgress
@Task(description="Implement tax computations",estimateHours=50,additionalNote="This implementation is critical for the final launch")
public static float ComputeTax(float amount,float rate){
return 0;
}
}
编译这段代码就会报错,支出不能把注解类型应用到这种声明中,因为其中定义了taxID 字段。
将Task 的注解应用到ComputeTax方法是可以的


3. @Inherited——指明该注解类型被自动继承。如果用户在当前类中查询这个元注解类型并且当前类的声明中不包含这个元注解类型,
那么也将自动查询当前类的父类是否存在Inherited元注解,这个动作将被重复执行知道这个标注类型被找到,或者是查询到顶层的父类。


4.@Retention——用于设置注解的可见性。RetentionPolicy取值为SOURCE,CLASS,RUNTIME。
@Retention(RetentionPolicy.RUNTIME)
RetentionPolicy枚举定义了3个常量:SOURCE. CLASS.RUNTIME
原创粉丝点击