关键词搜索

源码搜索 ×
×

一篇文章带你搞定 Java 中系统内建的 Annotation

发布2020-02-23浏览692次

详情内容

一、基本概念

系统建立了 3 个内建的 Annotation 类型,用户可以直接使用:

@Override: 覆写的Annotation.
@Deprecated: 不赞成使用的Annotation.
@SuppressW arnings: 压制安全警告的Annotation.

这里的 3 个 Annotation 全部是在 java.lang 包中定义的。因为此包在使用时是自动导入的,所以可以直接使用以上 3 个 Annotation。

3 种内定的 Annotation:
在这里插入图片描述

二、@Override

@Override 主要是在方法覆写时使用,用于保证方法覆写的正确性

class Person{
    public String getInfo(){
        return "这是一个类";
    }
}
class Student extends Person{ //子类继承父类
    @Override //此处明确指出方法覆写操作
    public String getInfo(){
        return "这是一个 Student";
    }
}
public class Test{
    public static void main(String[] args) {
        Person per = new Student();//通过子类实例化父类对象
        System.out.println(per.getInfo());
    }
}

    此处在覆写的 getInfo() 方法前加上了 @Override 注释,目的主要是防止用户在覆写方法定义出错

    同时 @Override 在使用时只能在方法上应用,而其他元素,如 类、属性等不能使用此 Annotation 的

    二、@Deprecated

    @Deprecated 注释的主要功能是用来声明一个不建议使用的方法,如果在程序中使用了此方法,则在编译时将出现警告信息

    该方法除了可以在方法上声明外,还可以在类中也可以进行声明

    @Deprecated 
    class Person{//声明不建议使用的类
        @Deprecated //声明不建议使用的类
        public String getInfo(){
            return "这是一个 Person 类";
        }
    }
    
    public class Test{
        public static void main(String[] args) {
            Person per = new Person();
            System.out.println(per.getInfo());//编译时将出现警告信息
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    在这里插入图片描述
    虽然有警告信息,但是程序可以正常执行,因为该注释表示方法不建议使用,但不是不能使用。

    三、@SuppressWarnings

    @SuppressWarnings 注释的功能主要用来压制警告

    比如 泛型操作时 ,如果在一个类声明时没有指明泛型,则肯定在编译时产生,那么此时就可以用 @SuppressWarnings 压制这种警告。

    class Person<T>{
        private T var;//定义泛型变量
    
        public T getVar() {
            return var;
        }
    
        public void setVar(T var) {
            this.var = var;
        }
    }
    
    public class Test{
        @SuppressWarnings("unchecked")//压制主方法的警告信息
        public static void main(String[] args) {
                Person per = new Person();
        }
    }
    
      18

    这里 @SuppressWarnings("unchecked") 注释的 uncharted,表示的是不检查,如果现在需要压制更多的警告信息,可以后面继续增加字符串,只是增加时,需要按照数组的格式增加:

    @Deprecated//以下操作不建议使用
    class Person<T>{
        private T var;//定义泛型变量
    
        public T getVar() {
            return var;
        }
    
        public void setVar(T var) {
            this.var = var;
        }
    }
    
    public class Test{
        @SuppressWarnings({"unchecked","depercation"})//压制两条警告信息
        public static void main(String[] args) {
                Person per = new Person();
                per.setVar("Java");
        }
    }
    
      18
    • 19
    • 20

    这里同时存在了 泛型和不建议两种警告信息,但是由于使用了 @SuppressWarnings 注释,所以编译时不会出现任何警告信息。

    @SuppressWarnings 中的关键字:
    在这里插入图片描述
    设置注释信息时,是以 key -> value 的形式出现的,所以 @SuppressWarnings 也可以直接使用 “value = {“unchecked”,“deprecation” }” 的方式设置:

    public class Test{
        @SuppressWarnings(value = {"unchecked","depercation"})//压制主方法的警告信息
        public static void main(String[] args) {
            Person per = new Person();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    相关技术文章

    点击QQ咨询
    开通会员
    返回顶部
    ×
    微信扫码支付
    微信扫码支付
    确定支付下载
    请使用微信描二维码支付
    ×

    提示信息

    ×

    选择支付方式

    • 微信支付
    • 支付宝付款
    确定支付下载