Java主要的5个标准注解如何使用?

Java主要提供了5个标准注解,分别是:

Override

Deprecated

SuppressWarnings

SafeVarargs

FunctionalInterface

本文将从“如何使用这5个标准注解”,还有编译器在编译时“如何处理它们”来讲述。下面,和黑马君一起来看Java标准注解的学习总结吧!

Java标准注解

1、Override

注解就是标记,而标记就是描述一个功能,那么Override这个标准注解的功能就是重写父类方法。我们如果在某个方法上加上这个注解,就表示该方法继承并重写父类的同名方法,如下所示:

publicclassParentClass{publicvoidhello(){System.out.println("HelloWorld!");}}publicclassSubClassextendsParentClass{@Overridepublicvoidhello(){System.out.println("HelloJava!");}}

上边是父类ParentClass,里面包含一个方法hello(),下边是ParentClass的子类SubClass,子类 SubClass里也有一个同名的方法hello(),该方法上面出现了Override注解,说明该hello方法重写了父类的hello方法。

当编译器编译代码时如果发现Override标记的方法名和重写的父类方法名不一致就会告警。

2、Deprecated

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

publicclassDeprecatedDemo{@Deprecatedpublicvoidhello(){System.out.println("HelloWorld!");}}

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

3、SuppressWarnings

SuppressWarnings的功能就是抑制编译器编译时产生警告信息,其中该注解可以使用以下几个属性来抑制告警信息。所以,假设我们在某个方法或者类成员属性上加上这样的标记,就像下面这样:

publicclassSuppressWarningDemo{@SuppressWarnings("unchecked")publicMapcast(){Objectobj=newObject();return(HashMap<String,String>)obj;}}

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

4、SafeVarargs

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

publicclassSafeVarargs{@SafeVarargspublicstaticvoidm(List<String>...lists){Object[]array=lists;List<Integer>tmpList=Arrays.asList(42);array[0]=tmpList;Strings=lists[0].get(0);}}

因为array变量是一个Object类型,是不确定明确数据类型的,而tmpList变量是一个明确Integer的List类型,当把tmpList赋值给array时,就是把明确类型变量赋值给不明确类型的变量,SafeVarargs作用就是忽略这种警告。

所以,当编译器编译发现一个方法上标记了SafeVarargs注解,就会忽略该方法内非类型安全的变量操作的告警。

5、FunctionalInterface

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

如下所示:

@FunctionalInterfacepublicinterfaceFunctionalInterfaceDemo{voidhello();}

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

本文来自投稿,不代表重蔚自留地立场,如若转载,请注明出处https://www.cwhello.com/263021.html

如有侵犯您的合法权益请发邮件951076433@qq.com联系删除

(0)
黑马程序员黑马程序员订阅用户
上一篇 2023年5月13日 12:50
下一篇 2023年5月13日 12:50

相关推荐

  • JavaScript中如何操作元素内容?

    操作元素样式有两种方式,一种是操作style属性,一种是操作className属性,下面我们分别进行讲解。1. 操作style属性除了前面讲解的元素内容和属性外,对于元素对象的样式,可以直接通过“元素对象.style.样式属性名”…

    2023年5月15日
    02
  • 门窗行业怎么进行网上宣传?(门窗企业如何开展网络推广)

    探讨:门窗行业怎么进行网上宣传?门窗企业如何开展网络推广?信息时代,是以科技和网络为主的时代。电子商务的兴起发展,改变了原本安定的传统模式,进入了一个全新的网络发展时代。较近几年,各种网络营销顺势而…

    2023年5月25日
    05
  • 装不了?

    近日,微软推出了首个 Windows 11 预览版本 -- Build 22000.51。北京时间 6 月 29 日凌晨一点,微软开始向 Win10 Dev 通道的用户推送 Win11 预览版更新。本次更新的版本号为 10.0.22000.51(co_release)。所谓预览…

    2023年5月13日 编程分享
    05
  • dubbo源码解析-网络通信(1)

    在之前的内容中,我们讲解了消费者端服务发现与提供者端服务暴露的相关内容,同时也知道消费者端通过内置的负载均衡算法获取合适的调用invoker进行远程调用。那么,本章节重点关注的就是远程调用过程即网络通信。网…

    2023年5月12日
    010
  • java后端开发需要学什么?

    Java属于后端开发中最常见的语言之一,Java这种语言的体系比较中立,而且具备了构建多线程的能力,在许多大型互联网平台Java的应用范围特别广泛。  java后端主要涉及到如下4个技术:  第一、Servlet。作为Java…

    2023年5月13日
    025
  • 如何利用UDP实现群聊聊天室?

    大家好,今天为大家带来了一个非常有意思的小程序——UDP实现的群聊聊天室。这个程序使用的UDP协议,并使用DatagramSocket的子类MulticastSocket实现组播,可以部署在一个局域网内的多台电脑上,并可以实现文字群聊。…

    2023年5月12日
    08
  • 局域网有哪些特点?

    局域网的研究始于20世纪70年代,1974年英国剑桥大学研制的剑桥环网和1975年美国Xerox公司推出的实验性以太网是局域网的典型代表。随着网络技术的发展和微型计算机的普及,局域网技术迅猛发展,局域网协议和标准逐渐…

    2023年5月13日
    04
  • Python中如何绘制单子图?

      使用pyplot的subplot()函数可以在规划好的某个区域中绘制单个子图,subplot()函数的语法格式如下:subplot(nrows, ncols, index, projection, polar, sharex, sharey, label, **kwargs)  该函数的常用参数含…

    2023年5月6日
    018

联系我们

QQ:951076433

在线咨询:点击这里给我发消息邮件:951076433@qq.com工作时间:周一至周五,9:30-18:30,节假日休息