Java之注解

news2024/11/14 5:50:48

注解

    • 1.1 注解的概念
    • 1.2 内置注解
    • 1.3 元注解
    • 1.4 自定义注解

在这里插入图片描述

1.1 注解的概念


  • Annotation 是从JDK5.0 开始引入的新技术

  • Annotation的作用

    • 不是程序本身,可以对程序做出解释(这一点和注释comment没什么区别)
    • 可以被其他程序(比如:编译器等)读取
  • Annotation的格式
    注解是以"@注解名"在代码中存在的,还可以添加一些参数值,例如:@SuppressWarnings(vlaue=“unchecked”)

  • Annotation的使用场景
    可以附加在package、class、method、field等上面,相当于给他们添加了额外的辅助信息,我们可以通过反射机制编程实现对这些元数据的访问

    // 什么是注解
    public class Demo01_Annotation extends Object{
      
      // @Override 就是一个注解
      @Override
      public String toString() {
          return super.toString();
      }
      
    }
    

1.2 内置注解


  • @Override: 定义在java.lang.Override 中,此注解只适用于修饰方法,表示一个方法声明打算重写父类中的另一个方法声明
  • @Deprecated: 定义在java.lang.Deprecated 中,此注解可以用于修饰方法、属性、类,表示不鼓励程序员使用这样的元素,通常是因为它很危险或者是存在更好的选择
  • @SuppressWarnings: 定义在java.lang.SuppressWarnings 中,用来抑制编译时的警告信息
    • 与前两个注解有所不同,你需要添加一个参数才能正确使用,这些参数都是已经定义好了的,我们选择性的使用就好了
    • @SuppressWarnings(“all”)
    • @SuppressWarnings(“unchecked”)
    • @SuppressWarnings(value={“unchecked”,“deprecation”})
    • 等等
// 什么是注解
public class Demo01_Annotation extends Object{
    
    // @Override 就是一个注解
    @Override
    public String toString() {
        return super.toString();
    }

    // @Deprecated 不推荐程序员使用,但是可以使用,或者存在更好的更新方式
    @Deprecated
    public static void test(){
        System.out.println("Deprecated");
    }

    // @SuppressWarning 抑制警告
    @SuppressWarnings("all")
    public void test01(){
        ArrayList<String> strings = new ArrayList<>();
    }

    public static void main(String[] args) {
        test();
    }
}

1.3 元注解


  • 元注解的作用就是负责注解其他注解,Java定义了4个标准的meta-annotation类型,他们被用来提供对其他annotation类型做说明
  • 这些类型和他们所支持的类在java.lang.annotation包中可以找到(@Target、@Retention 、@Documented、@Inherited)
    • @Target: 用于描述注解的适用范围(即:被描述的注解可以用在什么地方)
    • @Retention:表示需要在什么级别保存该注解信息,用于描述注解的生命周期(SOURCE < CLASS < RUNTIME)
    • @Documented:说明注解将被包含在javadoc中
    • @Inherited:说明子类可以继承父类中的该注解
    // 测试元注解
    @MyAnnotation
    public class Demo02_MetaAnnotation {
    
        @MyAnnotation
        public void test(){
    
        }
    
    }
    
    
    // 定义一个注解
    // @Target 可以用在什么地方
    // ElementType.METHOD方法上有效 ElementType.TYPE类上有效
    @Target(value={ElementType.METHOD,ElementType.TYPE})
    // 在什么地方生效
    // RUNTIME>CLASS>SOURCES
    @Retention(value= RetentionPolicy.RUNTIME)
    // 表示是否将我们的注解生成在Javadoc中
    @Documented
    // 子类可以竭诚父类的注解
    @Inherited
    @interface MyAnnotation{}
    

1.4 自定义注解


使用@interface自定义注解时,自动继承了java.lang.annotation.Annotation接口

分析:

  • @interface用来声明一个注解,格式: public @interface 主街名 { 定义内容 }
  • 其中的每一个方法实际上是声明了一个配置参数
  • 方法的名称就是参数的名称
  • 返回值类型就是参数的类型(返回值只能是类型、Class、String、enum
  • 可以通过default来声明参数的默认值
  • 如果只有一个参数成员,一般参数名为value
  • 注解元素必须要有值,我们定义注解元素时,经常使用空字符串,0作为默认值
// 自定义注解
public class Demo03_CustomAnnotation {
    // 注解可以显示赋值,如果没有默认值,就必须给注解赋值
    @MyAnnotation2(name = "张三")
    public void test(){
        
    }
}

@Target(value = {ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@interface MyAnnotation2{
    // 注解的参数:参数类型+参数名()
    // String name();
    String name() default "";
    int age() default 0;
    int id() default -1;// -1代表不存在
    String[] schools() default {"清华大学","北京大学"};
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/382765.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

解读场景化视频制作工具的实现过程

内容视频化正当其时&#xff0c;企业级智创工具创造新价值。全领域的内容视频化已是显性之势&#xff0c;其不仅覆盖传媒行业&#xff0c;更多泛行业正在以视频化内容的多元姿态创造新的商业价值。于是&#xff0c;不仅新闻传媒行业在超前体验智能化视频创造的效能红利&#xf…

ClickHouse进阶篇-多表连接物化视图

简介 在写这篇文章的时候doris 1.2 的物化视图只是支持单表建立物化视图&#xff0c;现在说下ClickHouse多表的物化视图。 前言 本文翻译自 Altinity 针对 ClickHouse 的系列技术文章。面向联机分析处理&#xff08;OLAP&#xff09;的开源分析引擎 ClickHouse&#xff0c;因…

蓝库云|ERP系统在企业数字化转型中最常用的八大功能

ERP系统和与企业数字化转型 随着数字化发展的兴起&#xff0c;规划和管理已成为企业产生富有成效的成果的关键。许多企业采用了企业资源规划 (ERP) 等先进工具&#xff0c;使企业所有者能够以高效的方式规划和管理其资源和运营。 ERP系统负责整合业务的不同流程并向决策者提供…

【LeetCode】剑指 Offer 20. 表示数值的字符串 p127 -- Java Version

题目链接&#xff1a;https://leetcode.cn/problems/biao-shi-shu-zhi-de-zi-fu-chuan-lcof/ 1. 题目介绍&#xff08;20. 表示数值的字符串&#xff09; 请实现一个函数用来判断字符串是否表示数值&#xff08;包括整数和小数&#xff09;。 数值&#xff08;按顺序&#xff…

【软件测试】还在背锅?接口自动化测试5个测试点(重要)8年测试的总结......

目录&#xff1a;导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09;前言 功能测试 接口的功能…

什么是数据可视化,数据可视化有什么价值

“数据可视化”这个词看上去似乎让人有点摸不着头脑&#xff0c;但其实在实际生活中也有类似的应用。举个例子&#xff0c;媒婆给你介绍对象&#xff0c;前面给你铺垫一堆&#xff0c;如五官端正、身材修长、皮肤雪白&#xff08;各种繁杂的信息描述&#xff09;&#xff0c;你…

Java集合(一)

目录 Java集合框架概述 Collection接口 Collection接口方法 Iterator迭代器接口 使用 Iterator 接口遍历集合元素 Iterator接口的方法 Iterator接口remove()方法 使用 foreach 循环遍历集合元素 Java集合框架概述 一方面&#xff0c; 面向对象语言对事物的体现都是以对…

一文搞懂华为的HCIA-Datacom(学习视频+模拟器+考试题库)

一、华为认证是什么&#xff1f; 二、为什么要选择华为认证 三、HCIA-Datacom的介绍 1.通过认证验证的能力 中小型园区网络的规划设计、部署实施、运维和优化能力 2.建议掌握的知识 路由交换原理、WLAN基本原理、网络安全基础知识、网络管理与运维基础知识、以及SDN与编程自动…

全球十大正规贵金属交易价格走势app软件排名(2023口碑榜)

最近&#xff0c;随着人们对贵金属产品的需求增加&#xff0c;贵金属价格走势变得更加复杂。为了更好地掌握贵金属市场的变化&#xff0c;很多投资者都在寻找一款可以追踪贵金属价格走势的app软件。 针对这一需求&#xff0c;现在已经有多款贵金属价格走势软件涌现在市场上。…

SSRF学习 3

目录 <1> 什么是SSRF&#xff1f; <2> 通常SSRF会发生在哪些位置&#xff1f; <3> 测试流程 <4> Weblogic-ssrf 复现 (1) 漏洞存在点 (2) 注入HTTP头&#xff0c;利用Redis反弹shell (3) 修复方案 <1> 什么是SSRF&#xff1f; SSRF(Serv…

CentOS安装配置Nginx

一、下载Nginx&#xff1a; 说明&#xff1a; 1&#xff09;因为这是一个stable稳定版本。 2&#xff09;Mainline version: 开发版&#xff1b;Stable version: 稳定版&#xff1b;Legacy versions: 早期版本&#xff1b; 二、上传到Linux中&#xff1a; 三、解压文件&#…

HBase集群部署

目录 一、前期准备 二、HBase下载 1. 查看HBase与hadoop版本对应关系 2. hbase的下载 3. 将hbase的tar包上传到linux 下 二、安装hbase 1. 解压 2. HBase的文件配置 主机名hadoop版本HBase版本hadoop安装路径Hbase安装路径HadoopMaster3.3.02.4.3/home/hadoop/softwareh…

【SSM】篇二:注解开发与AOP

文章目录1、注解开发1.1 注解开发定义bean1.2 纯注解开发模式1.3 注解开发Bean的作用范围和生命周期1.4 注解开发依赖注入1.5 注解开发管理第三方Bean2、Spring整合案例2.1 Spring整合mybatis2.2 Spring整合Junit3、AOP3.1 AOP思想入门案例3.2 AOP工作流程3.3 AOP切入点表达式3…

pg逻辑复制详解

目录 什么是逻辑复制 逻辑解析 复制槽 output plugin ​​​​​​​几个常见的outputplugin 几个能手动接收解析数据的函数和工具 逻辑解析测试1&#xff1a;观察用2个不同的output plugin解析数据 逻辑解析测试2&#xff1a;使用pg_recvlogical工具接收逻辑解析数据&am…

服务器配置 | 在Windows本地显示远程服务器绘图程序

文章目录方法1&#xff1a;在MobaXterm的终端输入指令方法2&#xff1a;在Pycharm中运行前提概要&#xff0c;需要在本地Windows端显示点云的3d可视化界面 对于点云的3d可视化一般有两种方法&#xff0c;open3d显示或者是mayavi显示。这两个库都可以使用pip install来实现安装…

给正在准备PMP考试的同学一些建议

去年年尾参与了pmp考试&#xff0c;顺利通过&#xff0c;并得了5A&#xff0c;让我小小激动了一下。在出来结果之前&#xff0c;我也是坚信自己能过&#xff0c;得知是5A&#xff0c;当然也是非常高兴。话不多说&#xff0c; 先贴图&#xff1a; 这里我将要说一下我都是如何备…

Modbus网关在锂电池干燥箱的应用

在锂离子电池生产过程中&#xff0c;将正负极片辊压绕卷再放入电池盒之后&#xff0c;须对锂电池电芯极组进行烘烤干燥。相信大家也了解水分对锂电池的性能影响是很大的&#xff0c;需要注液前在装配车间将锂离子电池电芯内部的水分去除&#xff0c;以免影响锂电池质量。在锂电…

星光2开发板使用ECR6600U无线wifi网卡的方法

visionfive2 开发板性能还是不错的&#xff0c;有些人买的时候会带一个无线wifi网卡&#xff0c;但是官方提供的操作系统没有驱动。 所以需要自己编驱动&#xff08;他大爷的&#xff09;。 还好有人已经踩过坑了。 星光2之USB无线网卡使用教程【新增RTL8832AU WiFi6双频无线…

开发手册——一、编程规约_3.代码格式

这篇文章主要梳理了在java的实际开发过程中的编程规范问题。本篇文章主要借鉴于《阿里巴巴java开发手册终极版》 下面我们一起来看一下吧。 1. 【强制】大括号的使用约定。如果是大括号内为空&#xff0c;则简洁地写成{}即可&#xff0c;不需要换行&#xff1b;如果是非空代码…

BI的能力边界:能解决的企业问题和不擅长的领域

数字化转型本就需要借助信息化相关技术、思想来完成&#xff0c;所以说信息化建设同样是数字化转型过程中非常重要的一环&#xff0c;而这就是商业智能BI和数字化转型的关系 BI 能解决的企业问题 数据是企业的重要资产&#xff0c;也是企业商业智能BI的核心要求。通常&#x…