• 在线客服

  • 扫描二维码
    下载博学谷APP

  • 扫描二维码
    关注博学谷微信公众号

  • 意见反馈

原创 Java标准注解学习总结

发布时间:2020-08-07 10:59:23 浏览 3136 来源:博学谷 作者:照照

    Java主要提供了5个标准注解,分别是:OverrideDeprecatedSuppressWarningsSafeVarargsFunctionalInterface。本文将从“如何使用这5个标准注解”,还有编译器在编译时:“如何处理它们”来讲述。一起来看Java标准注解的学习总结吧!

     

    Java标准注解

     

    1Override

     

    注解就是标记,而标记就是描述一个功能,那么Override这个标准注解的功能就是重写父类方法。大家可以先复习一下关于Java继承的概念,我们如果在某个方法上加上这个注解,就表示该方法继承并重写父类的同名方法,如下所示:

     

    public class ParentClass {

        public void hello() {

            System.out.println("Hello World!");

        }

    }

     

    public class SubClass extends ParentClass {

        @Override

        public void hello() {

            System.out.println("Hello Java!");

        }

    }

     

    上边是父类ParentClass,里面包含一个方法hello(),下边是ParentClass的子类SubClass,子类     SubClass里也有一个同名的方法hello(),该方法上面出现了Override注解,说明该hello方法重写了父类的hello方法。当编译器编译代码时如果发现Override标记的方法名和重写的父类方法名不一致就会告警。

     

    2Deprecated

     

    Deprecated注解的功能就是标记一个元素(类、方法或类成员属性)为已过期。所以,我们如果在识别为过期的类、方法或类成员属性上加上这个标记,就表示该类、方法或属性已经废弃。如下所示:

     

    public class DeprecatedDemo {

        @Deprecated

        public void hello() {

            System.out.println("Hello World!");

        }

    }

     

    hello方法上出现了Deprecated注解,说明该方法已过期(废弃)。当编译器编译时遇到了使用@Deprecated修饰的类、方法或属性时就会提示元素过期的警告信息。

     

    3SuppressWarnings

     

    SuppressWarnings的功能就是抑制编译器编译时产生警告信息,其中该注解可以使用以下几个属性来抑制告警信息:

     

     

     

    所以,假设我们在某个方法或者类成员属性上加上这样的标记,就像下面这样:

     

    public class SuppressWarningDemo {

        @SuppressWarnings("unchecked")

        publicMapcast() {

            Object obj = new Object();

            return  (HashMap<String, String>) obj;

        }

    }

     

    cast方法上出现SuppressWarning注解,同时,注解属性为unchecked,表示忽略方法内出现了未经类型检查的obj对象强制转换成HashMap结构的情况。@SuppressWarnings(“unchecked”),就是让编译器在编译时发现该方法或语句为unchecked未经类型检查的转换时,忽略告警。注解的其他属性类似。

     

    4SafeVarargs

     

    SafeVarargs是从JDK1.7以后才引入的标准注解,从字面上理解,它的功能就是对方法内非类型安全的变量操作进行告警。我们在某个方法上加上这样的标记,如下所示:

     

    public class SafeVarargs {

                       @SafeVarargs

                       public static void m(List<String>...lists) {

                                         Object[] array = lists;

                                         List<Integer> tmpList = Arrays.asList(42);

                                         array[0] = tmpList;

                                         String s = lists[0].get(0);

        }

    }

     

    因为array变量是一个Object类型,是不确定明确数据类型的,而tmpList变量是一个明确IntegerList类型,所以,当把tmpList赋值给array时,就是把明确类型变量赋值给不明确类型的变量,SafeVarargs作用就是忽略这种警告。所以,当编译器编译发现一个方法上标记了SafeVarargs注解,就会忽略该方法内非类型安全的变量操作的告警。

     

    5FunctionalInterface

     

    FunctionalInterfaceJDK1.8之后新增的标准注解,它的功能就是检查被标记的接口是否是一个函数接口。

    如下所示:

     

    @FunctionalInterface

    public interface FunctionalInterfaceDemo {

        void hello();

    }

     

    上面的接口类FunctionalInterfaceDemo被标记了FunctionalInterface注解,表示该类里面的接口方法hello()实现必须是函数式编程,如果不是,就会出现告警。所以,顾名思义,当编译器编译发现一个接口类上标记了FunctionalInterface注解,就会检查该接口类的接口方法实现是否为函数式编程,如果不是,编译器就会产生警告信息。

     

    好了,讲到这里,我们就把Java5个标准注解全部学习完了。大家觉得本文的学习总结好理解吗?如果本文对你有帮助,欢迎大家转发并收藏!

    申请免费试学名额    

在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!

上一篇: 上Java培训班有用吗?能找到工作吗? 下一篇: Java是什么?有哪些特点?

相关推荐 更多

热门文章

  • 前端是什么
  • 前端开发的工作职责
  • 前端开发需要会什么?先掌握这三大核心关键技术
  • 前端开发的工作方向有哪些?
  • 简历加分-4步写出HR想要的简历
  • 程序员如何突击面试?两大招带你拿下面试官
  • 程序员面试技巧
  • 架构师的厉害之处竟然是这……
  • 架构师书籍推荐
  • 懂了这些,才能成为架构师
  • 查看更多

扫描二维码,了解更多信息

博学谷二维码