当前位置: 首页 > news >正文

有哪些帮别人做任务赚钱的网站/16888精品货源入口

有哪些帮别人做任务赚钱的网站,16888精品货源入口,东莞物流网站建设,手机wordpress加载图片慢Java 注解(Annotation)自 Java 5 版本引入,为代码提供了强大的元数据支持。它们如同代码中的标记,能够被编译器、工具和运行时环境识别,赋予代码更丰富的语义和更强大的功能。 一、注解入门 1.1 初识注解&#xff1a…

Java 注解(Annotation)自 Java 5 版本引入,为代码提供了强大的元数据支持。它们如同代码中的标记,能够被编译器、工具和运行时环境识别,赋予代码更丰富的语义和更强大的功能。

一、注解入门

1.1 初识注解:代码中的特殊标记

Java 注解以 @注解名 的形式出现,附着于类、接口、方法、字段、参数等程序元素之上,为它们添加额外的信息。

例如:

@Override
public String toString() {// ...
}

这里的 @Override 注解明确告诉编译器该方法旨在重写父类的方法。

1.2 注解的用途:三种主要应用方式

注解本身不会直接参与代码逻辑的运行,但它们能够引导代码的行为,其主要用途包括:

  • 编译器指令:

    注解可以指导编译器的行为,例如 @Override 指示检查方法重写,@SuppressWarnings 指示抑制特定警告信息。

  • 代码分析:

    各种工具可以利用注解进行代码分析,例如生成API文档、执行代码规范检查、进行代码统计等。

  • 运行时处理:

    一些框架利用注解实现运行时功能,例如Spring框架使用 @Component、@Autowired 等注解实现依赖注入,极大地简化了配置。

1.3 内置注解:Java 提供的常用工具

Java 提供了一些内置注解,可以方便地应用于各种场景:

  • @Override:

    确保方法正确重写父类方法,避免因拼写错误导致的意外行为。

  • @Deprecated:

    标记已过时的元素,建议开发者不再使用,并提供替代方案的说明。

  • @SuppressWarnings:

    抑制编译器发出的特定警告信息,例如针对未使用变量的警告。

  • @FunctionalInterface:

    标记函数式接口,确保接口只有一个抽象方法,方便使用Lambda表达式。

二、自定义注解

2.1 定义注解:编写自定义规则

Java允许我们自定义注解,为代码赋予特定含义。定义注解使用 @interface 关键字,结构类似于接口定义:

@interface MyAnnotation {String author() default "Anonymous";  // 定义一个名为author的注解元素int version() default 1;              // 定义一个名为version的注解元素
}
  • @interface: 声明这是一个注解类型。

  • author, version: 注解的成员,称为注解元素,可以设置默认值。

2.2 元注解:设定注解规则和范围

元注解是用于注解其他注解的注解,为注解设定使用规则和范围。Java 提供了以下元注解:

  • @Retention:

    指定注解的生命周期,控制注解何时生效:

    • RetentionPolicy.SOURCE: 注解只保留在源代码中,编译时会被丢弃。

    • RetentionPolicy.CLASS: 注解保留在字节码文件中,但运行时不可获取。

    • RetentionPolicy.RUNTIME: 注解保留在字节码文件中,并在运行时可通过反射获取。

  • @Target:

    指定注解可以应用的程序元素类型,例如:

    • ElementType.TYPE: 类、接口、枚举

    • ElementType.METHOD: 方法

    • ElementType.FIELD: 字段

    • ElementType.PARAMETER: 参数

  • @Documented:

    将注解包含在 Javadoc 生成的文档中,方便开发者查阅。

  • @Inherited:

    允许子类继承父类的注解,简化代码。

2.3 使用自定义注解:为代码添加标记

定义好注解后,就可以为程序元素添加注解:

@MyAnnotation(author = "John Doe", version = 2)
public class MyClass {// ...
}

三、注解处理器

注解本身只是被动地存在于代码中,要发挥其作用,需要借助注解处理器来解读和应用注解信息。

3.1 反射机制:运行时获取注解信息

Java 反射机制可以在运行时获取注解信息:

MyClass myClass = new MyClass();
MyAnnotation annotation = myClass.getClass().getAnnotation(MyAnnotation.class);
String author = annotation.author(); // 获取注解元素的值
3.2 自定义注解处理器:编写注解解析器

我们可以自定义注解处理器,在编译期解析和处理注解,实现更强大的功能。

自定义注解处理器需要实现 javax.annotation.processing.Processor 接口,并注册到编译器中。

四、注解应用场景

注解在各种框架和工具中发挥着重要作用:

  • Spring框架:

    使用 @Component、@Autowired 等注解实现依赖注入,使用 @Transactional 实现声明式事务管理,大大简化了开发。

  • Hibernate框架:

    使用 @Entity、@Table、@Column 等注解将Java对象映射到数据库表,实现对象关系映射(ORM)。

  • 单元测试框架(JUnit, TestNG):

    使用 @Test、@Before、@After 等注解标记测试方法、设置测试环境,简化了测试代码的编写。

  • 代码生成工具(Lombok):

    使用 @Getter、@Setter、@ToString 等注解自动生成getter、setter、toString等方法,减少了样板代码。

五、总结

Java 注解为我们提供了一种强大的代码元数据机制,可以提高代码的可读性、可维护性和可扩展性。通过学习和掌握注解的使用,我们能够更好地理解和应用各种框架和工具,编写出更优雅、高效的代码。

以上就是关于Java注解的相关知识,希望对各位看官有所帮助,下期见,谢谢~

相关文章:

Java 之注解详解

Java 注解(Annotation)自 Java 5 版本引入,为代码提供了强大的元数据支持。它们如同代码中的标记,能够被编译器、工具和运行时环境识别,赋予代码更丰富的语义和更强大的功能。 一、注解入门 1.1 初识注解&#xff1a…...

计算机视觉实战项目4(图像分类+目标检测+目标跟踪+姿态识别+车道线识别+车牌识别+无人机检测+A*路径规划+单目测距与测速+行人车辆计数等)

往期热门项目回顾: 计算机视觉项目大集合 改进的yolo目标检测-测距测速 路径规划算法 图像去雨去雾目标检测测距项目 交通标志识别项目 yolo系列-重磅yolov9界面-最新的yolo 姿态识别-3d姿态识别 深度学习小白学习路线 AI健身教练-引体向上-俯卧撑计数…...

【Spring Cloud】Spring Cloud 概述

Spring Cloud 概述 1. 认识微服务1.1 单体架构1.2 集群和分布式架构集群和分布式 1.3 微服务架构分布式架构&微服务架构 1.4 微服务带来的挑战优势挑战 2. 微服务解决⽅案- Spring Cloud2.1 什么是Spring Cloud2.2 Spring Cloud版本Spring Cloud和SpringBoot的关系 2.3 Spr…...

猫头虎带你解决:error Error: certificate has expired

🐯猫头虎带你解决:error Error: certificate has expired 💥 今天有粉丝问猫哥:“🐯猫头虎,我在 Node.js 项目中使用 Yarn 安装包时遇到了一个错误:Error: certificate has expired。你能帮忙解…...

盘点2024年4款高效率的语音转文字工具。

语音转换文字软件真的是一种提高效率的神器,我在工作中常常因为手动记录太慢而选择录音。事后在形成记录,但效率比较低。自从知道有直接转换的工具之后,我有再多的录音都不怕了。如果大家也有跟我一样的工作时,可以试试使用这些语…...

记录Mac编译Android源码踩过的坑

学习Android源码,如果电脑配置还不错,最好还是下载一套源码,经过编译后导入到Android Studio中来学习,这样会更加的直观,代码之间的跳转查看会更加方便。因此,笔者决定下载并编译一套源码,以利于…...

C++ 数据结构算法细节相关

细节 队列 这段代码实现的是二叉树的层序遍历&#xff0c;也就是按照树的层次&#xff0c;一层一层地遍历节点。下面我会为你详细解释这段代码。 queue <TreeNode*> q; 这是一个队列&#xff0c;队列中存放的是指向TreeNode的指针。队列&#xff08;queue&#xff09;是…...

【HTML5】html5开篇基础(1)

1.❤️❤️前言~&#x1f973;&#x1f389;&#x1f389;&#x1f389; Hello, Hello~ 亲爱的朋友们&#x1f44b;&#x1f44b;&#xff0c;这里是E绵绵呀✍️✍️。 如果你喜欢这篇文章&#xff0c;请别吝啬你的点赞❤️❤️和收藏&#x1f4d6;&#x1f4d6;。如果你对我的…...

C#自定义曲线绘图面板

一、实现功能 1、显示面板绘制。 2、拖动面板&#xff0c;X轴、Y轴都可以拖动。 3、显示面板缩放&#xff0c;放大或者缩小。 4、鼠标在面板中对应的XY轴数值。 5、自动生成的数据数组&#xff0c;曲线显示。 6、鼠标是否在曲线上检测。 二、界面 拖动面板 鼠标在曲线上…...

Java后端面试题+下一篇答案+实况场景题

uu们大家好&#xff01;市面上面试题很多&#xff0c;这边汇总并更新一下java后端面试的题目&#xff0c;助大家早日斩下心仪的offer&#xff01;&#xff01;&#xff08;下次跟新场景题...等我多碰几次壁...哈哈哈哈哈&#xff09; 这边放题目&#xff0c;下一篇跟新所有另面…...

完美解决vant浮动气泡+弹出菜单

使用框架&#xff1a; vue3&#xff0c;vant4 项目需求&#xff1a; 需要有一个浮动气泡&#xff0c;点击弹出导航菜单 遇到的问题&#xff1a; 1. 使用van-floating-bubble包裹van-popover&#xff0c;但点击后只会重复显示不能隐藏 2. popover位置固定&#xff0c;不能根据…...

SpringSecurity -- 入门使用

文章目录 什么是 SpringSesurity &#xff1f;细节使用方法 什么是 SpringSesurity &#xff1f; 在我们的开发中&#xff0c;安全还是有些必要的 用 拦截器 和 过滤器 写代码还是比较麻烦。 SpringSecurity 是 SpringBoot 的底层安全默认选型。一般我们需要认证和授权&#xf…...

C语言习题~day33

1.以下程序运行时&#xff0c;若输入1abcedf2df输出结果是&#xff08;&#xff09; #include <stdio.h> int main() { char a 0, ch; while ((ch getchar()) ! \n) { if (a % 2 ! 0 && (ch > a && ch < z)) ch ch - a A; a; putchar(ch); }…...

作业报告┭┮﹏┭┮(Android反调试)

一&#xff1a;Android反调试 主要是用来防止IDA进行附加的&#xff0c;主要的方法思路就是&#xff0c;判断自身是否有父进程&#xff0c;判断是否端口被监听&#xff0c;然后通过调用so文件中的线程进行监视&#xff0c;这个线程开启一般JNI_OnLoad中进行开启的。但是这个是…...

在 Delphi BSD11中安装 DCU 格式的第三方组件库

在 Delphi BSD 11 中安装 DCU 格式的第三方组件库可以按照以下步骤进行&#xff1a; 打开 Delphi&#xff1a;启动 Delphi 开发环境。 选择安装组件&#xff1a; 在菜单栏中&#xff0c;选择 Component -> Install Component。 选择 DCU 文件&#xff1a; 在弹出的对话框中…...

综合题第二题(路由器的配置)

题目 如何计算子网掩码 第一类 我们可以观察到上图的IP地址后面有“/26”、“30”。我们都知道子网掩码是由多个连续“1”和多个连续“0”组成的&#xff0c;“、26”表示子网掩码的二进制表达中有26个1。 例如&#xff1a;156.95.9.128/26 1111 1111.1111 1111.1111 1111.1…...

人工智能概览

目录 什么是人工智能 人工智能的历史与发展 人工智能发展时间轴示意图&#xff1a; 人工智能的主要分支 机器学习与深度学习在AI中的地位 什么是人工智能 人工智能&#xff08;Artificial Intelligence, AI&#xff09;是指由人制造出来的具有一定智能的系统&#xff0c;能够理…...

[vulnhub] Prime 1

https://www.vulnhub.com/entry/prime-1,358/ 主机发现端口扫描 探测存活主机&#xff0c;137是靶机 nmap -sP 192.168.75.0/24 // Starting Nmap 7.93 ( https://nmap.org ) at 2024-09-22 16:25 CST Nmap scan report for 192.168.75.1 Host is up (…...

JavaSE——lombok、juint单元测试、断言

一、lombok的使用 默认jvm不解析第三方注解&#xff0c;需要手动开启 链式调用 二、juint单元测试 下载juint包 public class TestDemo {// 在每一个单元测试方法执行之前执行Beforepublic void before() {// 例如可以在before部分创建IO流System.out.println("befor…...

商标价值如何评估与增值?

商标是企业的标志&#xff0c;代表着企业的产品或服务质量、信誉和形象。一个具有高知名度和美誉度的商标&#xff0c;能够为企业带来巨大的商业价值。它不仅可以帮助企业在市场中脱颖而出&#xff0c;吸引消费者的关注和购买&#xff0c;还可以作为企业的重要资产进行融资、并…...

linux命令之firewall-cmd用法

firewall-cmd Linux上新用的防火墙软件&#xff0c;跟iptables差不多的工具 补充说明 firewall-cmd 是 firewalld的字符界面管理工具&#xff0c;firewalld是centos7的一大特性&#xff0c;最大的好处有两个&#xff1a;支持动态更新&#xff0c;不用重启服务&#xff1b;第…...

深入浅出CSS盒子模型

“批判他人总是想的太简单 剖析自己总是想的太困难” 文章目录 前言文章有误敬请斧正 不胜感恩&#xff01;什么是盒子模型&#xff1f;盒子模型的组成部分详解1. 内容区&#xff08;Content&#xff09;2. 内边距&#xff08;Padding&#xff09;3. 边框&#xff08;Border&am…...

字符编码发展史4 — Unicode与UTF-8

上一篇《字符编码发展史3 — GB2312/Big5/GBK/GB18030》我们讲解了ANSI编码中的GB2312/Big5/GBK/GB18030。本篇我们将继续讲解字符编码的第三个发展阶段中的Unicode与UTF-8。 2.3. 第三个阶段 国际化 前面提到的第二个阶段&#xff0c;各个国家和地区各自为政&#xff0c;纷纷…...

【flink】之如何消费kafka数据并读写入redis?

背景&#xff1a; 最近公司出现做了一个新需求&#xff0c;需求内容是加工一个营销时机&#xff0c;但是加工营销时机的同时需要把数据内容里的一个idmapping存入redis用于后续的读写。 准备&#xff1a; <!-- 依赖 --><dependency><groupId>org.apache.fl…...

搜索引擎onesearch3实现解释和升级到Elasticsearch v8系列(二)-索引

场景 首先介绍测试的场景&#xff0c;本系列schema定义 pdm文档索引&#xff0c;包括nested&#xff0c;作为文档扩展属性字段&#xff0c;_content字段是组件保留字段&#xff0c;支持文本内容&#xff0c;字段属性还有其他属性&#xff0c;如boost&#xff0c;getter&#x…...

离散化算法

离散化 在C中&#xff0c;离散化通常指的是将连续的数值或数据转化为离散的形式。这在数值分析、信号处理、图像处理和机器学习等领域都非常常见。以下是一些离散化的基本概念和方法&#xff1a; 1.区间划分&#xff1a; 将连续变量的值域分成多个区间&#xff0c;每个区间对…...

基于ollama的本地RAG实践

先放参考的原文链接大语言模型实战——搭建纯本地迷你版RAG_本地rag-CSDN博客 一、大模型选择 在我之前的文章中有讲到&#xff0c;我用的是ollama中的llama3.1 Ollama在Windows安装&#xff0c;使用&#xff0c;简单调用API_ollama如何对外提供api-CSDN博客 二、嵌入模型 …...

安卓开发板_MTK开发板_联发科开发评估套件Demo板接口介绍

开发板是一种功能丰富的电路平台&#xff0c;专为开发人员设计&#xff0c;集成了多种传感器、扩展接口和通信模块。这使得开发者能够高效进行原型设计和功能验证&#xff0c;极大地简化了软硬件开发的过程。 此次介绍的安卓开发板由MT8788核心板与底板构成&#xff0c;特别之处…...

代码随想录冲冲冲 Day58 图论Part9

47. 参加科学大会&#xff08;第六期模拟笔试&#xff09; 根据昨天的dijkstra进行堆优化 使用的原因是点多但边少 所以直接对于边进行操作 1.对于priority_queue来说 这是最小堆, 小于的话就是最大堆 之后由于是根据边来说的 所以新建一个Edge并且初始化一下 之后由于使用…...

UnityHub下载任意版本的Unity包

1)先打开 // 也可以采用2直接打开 2)也可以直接打开 下载存档 (unity.com) 3)关联起来UnityHub即可...