Java-注解

2019-02-09  本文已影响91人  指尖轻敲

一、JDK自带注解

我们最常见的就是@Override,表示方法重写,覆盖父元素的该方法。

@Override
public String toString() {
    return super.toString();
}

除此之外还有Deprecated@Suppvisewarnings,上代码,

public class Person {
    @Deprecated
    public void sayHello(){
        System.out.println(123);
    }
}

这里定义了一个sayHello的方法,并且用@Deprecated修饰了,用来表示该方法即将被废除,不推荐使用了。调用的时候会有删除提示。

image.png

但是如果我就想用怎么办呢?也可以,添加一个忽略的注解。

public class Boy {
    @SuppressWarnings("deprecation")
    public static void main(String args[]){
        Person person = new Person();
        person.sayHello();
    }
}

二、自定义注解

首先自定义注解的语法有一定的要求:

Description.java:

import java.lang.annotation.*;

@Target({ElementType.METHOD,ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface Description {
    String name(); //无参数
    int age() default 19; //默认值
}

前面带@号的一些注解为元注解

  1. @Target:指定注解的作用域,这里是用在(METHOD)方法上和(TYPE)类上。
使用注解的类中.png

如果用在了没有指定的作用域上(这里是成员变量),就会报错

  1. @Retention:注解的生命周期,包括:SOURCE(源码中显示)、CLASS (编译到.class文件中)、RUNTIME(运行中,可以通过反射读取)
Class c = Class.forName("Use");
// 判断使用Use这个类中是否有Description这样一个类注解
boolean isExit = c.isAnnotationPresent(Description.class);
  1. @Inherited:允许子类继承,仅限作用在类上的注解

  2. @Documented:生成javadoc时会包含注解。(此注解就是上面说的标识注解,没有任何成员)

上一篇下一篇

猜你喜欢

热点阅读