← 返回首页
JavaSE系列教程(八十六)
发表时间:2020-02-28 20:54:08
讲解java的三种预注解。

1.@Override注解

@Override是伪代码,表示重写(当然不写也可以),不过写上有如下好处: 1、可以当注释用,方便阅读; 2、编译器可以给你验证@Override下面的方法名是否是你父类中所有的,如果没有则报错。例如,你如果没写@Override,而你下面的方法名又写错了,这时你的编译器是可以编译通过的,因为编译器以为这个方法是你的子类中自己增加的方法。

实例:

public class Person {

    private String name;
    private String gender;
    private String birthday;

    public Person() {
    }

    public Person(String name, String gender, String birthday) {
        this.name = name;
        this.gender = gender;
        this.birthday = birthday;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public String getBirthday() {
        return birthday;
    }

    public void setBirthday(String birthday) {
        this.birthday = birthday;
    }

    @Override //重写了Object类的toString()方法
    public String toString() {
        return super.toString();
    }

    //@Override //错误因为此方法不是重写父类的方法
    public void sayHello(){

    }
}

2. @Deprecated

注解 @Deprecated 可以标记 Java API 状态,可以是以下几种:

使用它存在风险,可能导致错误 可能在未来版本中不兼容 可能在未来版本中删除 一个更好和更高效的方案已经取代它。 Java 9 中注解增加了两个新元素:since 和 forRemoval。

since: 元素指定已注解的API元素已被弃用的版本。 forRemoval: 元素表示注解的 API 元素在将来的版本中被删除,应该迁移 API。

实例:

public class Person {

    private String name;
    private String gender;
    private String birthday;

    public Person() {
    }

    public Person(String name, String gender, String birthday) {
        this.name = name;
        this.gender = gender;
        this.birthday = birthday;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public String getBirthday() {
        return birthday;
    }

    public void setBirthday(String birthday) {
        this.birthday = birthday;
    }

    @Override //重写了Object类的toString()方法
    public String toString() {
        return super.toString();
    }

    @Deprecated //表示此方法已经被废弃不推荐使用。
    public void sayHello(){
        System.out.println("how are you?");
    }


    public static void main(String[] args) {
        Person p = new Person();
        p.sayHello(); //不推荐使用此方法。
    }
}

3. @SupperessWarnings

@SupperessWarnings:抑制编译器警告。 常用用法如下: @SuppressWarnings(“rawtypes”) 是什么含义 SuppressWarnings压制警告,即去除警告 rawtypes是说传参时也要传递带泛型的参数 @SuppressWarnings(“unchecked”) unchecked 执行了未检查的转换时的警告 @SuppressWarnings({“static-access”, “unchecked”}) 指示应该在注释元素(以及包含在该注释元素中的所有程序元素)中取消显示指定的编译器警告。

实例:

public class Person {

    private String name;
    private String gender;
    private String birthday;

    public Person() {
    }

    public Person(String name, String gender, String birthday) {
        this.name = name;
        this.gender = gender;
        this.birthday = birthday;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public String getBirthday() {
        return birthday;
    }

    public void setBirthday(String birthday) {
        this.birthday = birthday;
    }

    @Override //重写了Object类的toString()方法
    public String toString() {
        return super.toString();
    }

    @SuppressWarnings({"unchecked","rawtypes"})
    public void initPersons(){
        List list = new ArrayList();
        list.add(new Person());
    }

}