注解


内置注解

  • @Override

    表示一个方法声名打算重写超类中的另一个方法声明。

  • @Deprecated

    表示不鼓励程序员使用这样的元素

  • @SuppressWarnings()

    抑制编译时的警告信息

    如@SuppressWarnings("all")等


    元注解

    除了直接使用JDK 定义好的注解,我们还可以自定义注解,在JDK 1.5中提供了4个标准的用来对注解类型进行注解的注解类,我们称之为 meta-annotation(元注解),他们分别是:

  • @Target

    Target注解的作用是:描述注解的使用范围(即:被修饰的注解可以用在什么地方

  • @Retention

    Reteniton注解的作用是:描述注解保留的时间范围(即:被描述的注解在它所修饰的类中可以被保留到何时)

    Reteniton注解用来限定那些被它所注解的注解类在注解到其他类上以后,可被保留到何时,一共有三种策略,定义在RetentionPolicy枚举中。

    RUNTIME一般较常用

    SOURCE,    // 源文件保留
    CLASS,       // 编译期保留,默认值
    RUNTIME   // 运行期保留,可通过反射去获取注解信息
    
  • @Documented

    表示是否将注解生成在JavaDoc中

  • @Inherited

    子类可以继承父类的注解

我们可以使用这4个元注解来对我们自定义的注解类型进行注解


自定义注解

使用@interface

//定义一个注解
@Target(value = {ElementType.METHOD,ElementType.TYPE})  //表示注解可以用在方法、类上
@Retention(value = RetentionPolicy.RUNTIME)             //表示注解在什么时候有效RUNTIME>class>sources
@Documented                                             //表示是否将注解生成在JavaDoc中
@Inherited                                              //子类可以继承父类的注解
public @interface MyAnnotation{

}
//定义一个注解
@Target(value = {ElementType.METHOD,ElementType.TYPE})  //表示注解可以用在方法、类上
@Retention(value = RetentionPolicy.RUNTIME)             //表示注解在什么时候有效RUNTIME>class>sources
@Documented                                             //表示是否将注解生成在JavaDoc中
@Inherited                                              //子类可以继承父类的注解
public @interface MyAnnotation{
    //注解的参数: 参数类型+参数名()
    String name() default "";  //default 表示默认值  这里是默认值为空
    int age() default 0;
    int id() default -1;    //默认值为-1,代表不存在

    String [] schools();
}


@Target(value = {ElementType.METHOD,ElementType.TYPE})  //表示注解可以用在方法、类上
@Retention(value = RetentionPolicy.RUNTIME)             //表示注解在什么时候有效RUNTIME>class>sources
public @interface MyAnnotation2{
    String value();  //如果注解中只有一个参数,则建议定义为value,这样在使用的时候直接写  @MyAnnotation2("赋值")
}