JAVA学习-注解.基本语法

        Java注解是一种用于为程序元素(如类、方法、字段、参数等)添加元数据的标记。它们提供了一种简单而又强大的方式来在源代码中插入元数据,以及编译器、工具和框架等在处理程序时使用这些元数据。

一、Java注解的基本语法如下:

1. 定义注解:

public @interface MyAnnotation {// 注解的成员String value();int count() default 1;
}

2. 使用注解:

@MyAnnotation(value = "hello", count = 5)
public class MyClass {// 类的成员
}

二、Java注解的特点如下:

1. 元数据:

注解本身不影响程序的运行逻辑,它只是提供了一种用于描述和存储元数据的机制。

2. 元注解:

Java提供了一些元注解(如@Retention,@Target,@Documented等),用于定义和声明注解的行为和约束。

3. 可重复注解:

Java 8引入了可重复注解,允许在同一个元素上多次使用相同的注解。

4. 默认值:

可以为注解的成员指定默认值,可以在使用注解时省略对应的成员赋值。

5. 通过反射获取注解信息:

可以使用反射机制来获取注解的信息,包括注解的类型、成员值等。

三、Java注解的使用方法:

1. 在类、方法、字段、参数等元素前面加上注解。
2. 使用注解时可以设置注解的成员值。

四:与其他比较:

- 注解与注释:

注解与注释不同,注解可以被编译器、工具和框架等处理和使用,而注释只是对代码的解释说明,不会被编译器处理。

- 注解与反射:

注解可以与反射机制结合使用,可以通过反射获取注解的信息,包括注解的类型、成员值等。

五、高级应用:

- 自定义注解:

可以根据需要自定义注解,根据注解的特定作用对程序进行相应的处理。

- 编译时注解处理器:

可以使用注解处理器在编译时对注解进行处理,生成额外的代码或进行其他操作。

以下是一个使用自定义注解的示例代码:

import java.lang.annotation.*;@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface MyAnnotation {String value();
}public class MyClass {@MyAnnotation("hello")public void myMethod() {// 方法的实现}
}public class Main {public static void main(String[] args) throws Exception {MyClass obj = new MyClass();Method method = obj.getClass().getMethod("myMethod");MyAnnotation annotation = method.getAnnotation(MyAnnotation.class);System.out.println(annotation.value()); // 输出: hello}
}

        以上代码定义了一个自定义注解'MyAnnotation',然后在'MyClass'类的'myMethod'方法上使用了该注解。在'Main'类中使用反射获取注解的值并输出。

        在实际开发中,注解有着广泛的应用,如Spring框架中的'@Autowired'、JUnit中的'@Test'等。注解可以提供额外的信息,帮助框架、工具和编译器等进行更好的处理和优化。

(文章为作者在学习java过程中的一些个人体会总结和借鉴,如有不当、错误的地方,请各位大佬批评指正,定当努力改正,如有侵权请联系作者删帖。)

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

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

相关文章

ZFT9 7VE8033同期脉冲发送装置 JSOEF约瑟

系列型号 ZFT9(PIG) 7VE8033同期脉冲发送装置; ZFT9(PIG) 7VE8043同期脉冲发送装置; ZFT9 7VE8033同期脉冲发送装置; ZFT9 7VE8043同期脉冲发送装置; 用途: ZFT9(PIG)同期脉冲发送装置用于船舶的三相系统,根据发电机和电力系统之间电压差、相位差、频率…

SAP SD学习笔记05 - SD中的一括处理(集中处理),出荷和请求的冻结(替代实现承认功能)

上一章讲了SD的重要概念,比如出荷Plant(交货工厂),出荷Point(装运点),输送计划,品目的可用性检查,一括纳入/分割纳入,仓库管理等。 SAP SD学习笔记04 - 出荷…

凡泰极客亮相2024 亚马逊云科技出海全球化论坛,为企业数字化出海赋能

随着「不出海,即出局」登上热搜榜单,企业出海已成燎原之势,3月29日,2024 亚马逊云科技出海全球化论坛在深圳成功举办,凡泰极客创始人梁启鸿受邀出席,并以 「App 2.0:以SuperApp构建智能数字生态…

K8s下部署grafana

1. 系统要求 最小化的软硬件要求 最小化硬件要求 磁盘空间: 1 GB内存: 750 MiB (approx 750 MB)CPU: 250m (approx 2.5 cores) 2. k8s部署grafana步骤 1) 创建名字空间 kubectl create namespace my-grafana 2) 创建yaml vim grafana.yaml yaml包含如下三个资源对象 Ob…

【七 (4)FineBI FCP模拟试卷-电站数据分析】

目录 文章导航一、字段解释1、电站基础信息表2、电站事实表 二、需求三、操作步骤1、将新增一列日期12、以左关联的形式增加装机容量3、年度发电总量4、年度售电完成率4、发电量及发电效率5、年售电完成比、售电回款比、管理费用比、运维费用比5、总装机容量6、最近日期7、最近…

Java基础-知识点03(面试|学习)

Java基础-知识点03 String类String类的作用及特性String不可以改变的原因及好处String、StringBuilder、StringBuffer的区别String中的replace和replaceAll的区别字符串拼接使用还是使用StringbuilderString中的equal()与Object方法中equals()区别String a new String("a…

使用 Docker 部署 Open-Resume 在线简历平台

1)Open-Resume 介绍 GitHub: https://github.com/xitanggg/open-resume Open-Resume 是一款功能强大的开源 简历生成器 和 简历解析器 。可以帮助我们快速的生成个人简历,并定制化不同的主题和布局风格。该项目的目标是为每个人提供免费的现…

Ae 表达式中 toComp 是什么意思,一般用在什么情况?

#设计/AE #Javascript 在 Adobe After Effects(简称AE)中,toComp 是一个表达式函数,它的主要作用是将图层上某个点的坐标从该图层的本地坐标系转换为合成(Composition,简称Comp)的全局坐标系。这个转换过程对于处理图层间的相对位置、动画同步、跟随效果等场景非常有用…

java数据结构与算法刷题-----LeetCode1009. 十进制整数的反码

java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846 文章目录 476题相同解法 476题相同解法 解题思路: 因为此题和…

【I/O】基于事件驱动的 I/O 模型---Reactor

Reactor 模型 BIO 到 I/O 多路复用 为每个连接都创建一个线程 假设我们现在有一个服务器,想要对接多个客户端,那么最简单的方法就是服务端为每个连接都创建一个线程,处理完业务逻辑后,随着连接关闭线程也要销毁,但是…

每日一题---移除元素

文章目录 1.题目名称2.题目思路2.1.思路1:2.2.思路2: 3.参考代码 每日一题—移除元素 1.题目名称 2.题目思路 2.1.思路1: 创建一个新的数组,将值不为val的放到新的数组,然后在返回新的数组的大小,但是题目专门说啦,这…

Big Data and Cognitive Computing (IF=3.7) 期刊投稿

Special Issue: Artificial Cognitive Systems for Computer Vision 欢迎计算机视觉相关工作的投稿! 影响因子3.7,截止时间2024年12月31日 投稿咨询:lqyan18fudan.edu.cn 投稿网址:https://www.mdpi.com/journal/BDCC/special_iss…

Nature Machine Intelligence 纽约大学团队提出基于深度学习和语音生成技术的脑电-语音解码

由于神经系统的缺陷导致的失语会导致严重的生活障碍,它可能会限制人们的职业和社交生活。近年来,深度学习和脑机接口(BCI)技术的飞速发展为开发能够帮助失语者沟通的神经语音假肢提供了可行性。开发神经-语音解码器的尝试大多数依…

CSS之固定定位、相对定位、绝对定位

一、相对定位 相对元素自身所在的原来的位置进行定位,可以设置 left,right,top,bottom四个属性。 效果:在进行相对定位以后,元素原来所在的位置被保留了,既保留占位,其他元素的位置…

CSS核心样式-02-盒模型属性及扩展应用

目录 三、盒模型属性 常见盒模型区域 盒模型图 盒模型五大属性 1. 宽度 width 2. 高度 height 3. 内边距 padding 四值法 三值法 二值法 单值法 案例 4. 边框 border 按照属性值的类型划分为三个单一属性 ①线宽 border-width ②线型 border-style ③边框颜色 bo…

Python数据分析案例40——电商直播间成交金额预测

承接上一篇案例电商直播间提取的特征,进而做一篇机器学习的案例,来预测直播间的成交金额。 Python数据分析案例39——电商直播间评论可视化分析(LDA) 1. 引言 1.1 直播电商与传统电商的比较 直播电商作为一种新兴的电子商务模式…

超详细的YOLOv8项目组成解析:一站式指南了解其架构与组件

目录 yolov8导航 YOLOv8(附带各种任务详细说明链接) 项目结构 1. .github 2. docker 2.1 docker/Dockerfile 2.2 docker/Dockerfile-arm64 2.3 docker/Dockerfile-conda 2.4 docker/Dockerfile-cpu 2.5 docker/Dockerfile-jetson 2.6 docker/D…

Java | Leetcode Java题解之第27题移除元素

题目&#xff1a; 题解&#xff1a; class Solution {public int removeElement(int[] nums, int val) {int left 0;int right nums.length;while (left < right) {if (nums[left] val) {nums[left] nums[right - 1];right--;} else {left;}}return left;} }

MySQL之索引失效、覆盖、前缀索引及单列、联合索引详细总结

索引失效 最左前缀法则 如果索引了多列(联合索引)&#xff0c;要遵守最左前缀法则&#xff0c;最左前缀法则指的是查询从索引的最左列开始&#xff0c;并且不跳过索引中的列。如果跳跃某一列&#xff0c;索引将部分失效&#xff08;后面的字段索引失效&#xff09;。 联合索…

《古琴律学入门指南》——探寻古琴之美

《古琴律学入门指南》——探寻古琴之美感悟音律奥妙&#xff01;古琴 一抹古老的音韵 一段悠久的历史《古琴律学入门指南》是一本全面介绍中国传统古琴律学的教材涵盖了三分损益 古琴入门 古琴根基等重要内容本书由古琴专家倾情撰写深入浅出地解释了古琴律学的精髓通过丰富的例…