Java注解基础(一)

Java注解(Annotation)

2016/5/19 20:11:18 SeventeenWen

Annotation可以用来修饰包,类,方法,成员变量,参数,局部变量。
我们可以通过反射的方式来获取Annotation的数值,
主要的注解

  1. @Override
  2. @Deprecated
  3. @SuppressWarrnings

@Override

修饰的方法是重写(覆盖)的,用它修饰的方法必须重写(覆盖)父类的方法。@Override对程序没有任何影响,它只是告诉编译器这是一个重写的方法,编译器可以检查这个方法是否重写了父类的方法。而且@Override只能修饰方法。

@Deprecated

过时的。用处不大!

@SuppressWarnings

抑制异常,使用这个注解修饰后,编译器将不会发出警告。

@Retention

用来修饰Annotation,有个RetentionPolicy类型的value,它有三个值

  1. CLASS:编译器将把注释记录在类文件中,但在运行时 JVM 不需要保留注释(默认属性)。
  2. RUNTIME:编译器将把注释记录在类文件中,在运行时 VM 将保留注释,因此可以反射性地读取。
  3. SOURCE:编译器要丢弃的注释。

如果要通过反射获得注解信息,就必须将Retention设置成RUNTIME。

如何自定义Annotation?

使用@interface关键字

    public @interface Test(){


    }

定义完,我们可以在程序的任何地方使用@Test来使用注解

    @Test   //我们自己定义的Annotation
    public class Demo {
        @Test
        public void fun(){


    }

}

可以用Annotation来修饰任何程序元素,Annotation可以带有成员变量。以方法的形式来定义,非常像接口的定义。

    public @interface Test {
        String name();
        int age();
}   

定义了成员变量之后我们就可以在使用Annotation时给成员变量赋值,

    @Test   //我们自己定义的Annotation
    public class Demo {
        @Test(name="SeventeenWen",age="22")
        public void fun(){


        }

}

还可以给Annotation设置默认值

public @interface Test {
    String name() ;
    int age();
}   

如果没有在使用Annotation是赋值,将默认使用默认值。

获取Annotation的值

可以通过反射的方式获取
接口 AnnotatedElement的实现类

  1. Class
  2. Method
  3. Pacage
  4. Field
  5. Constructor

方法(Java7):

  1. getAnnotation < T extends Annotation > T getAnnotation(Class annotationClass):给定类型。
  2. getAnnotations:返回此元素上存在的所有注解。
  3. getDeclaredAnnotations:返回直接修饰这个程序的注解。
  4. booleanisAnnotationPresent(Class<?extendsAnnotation> annotationClass):判断是否有指定的注解存在。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值