第十天Java基础(注解)

Java注解全面解析:从基础到进阶 除了使用Java内置注解和元注解,我们还可以根据实际需求自定义注解。自定义注解需要使用元注解来定义其特性。上述代码定义了一个名为的注解,它有一个成员变量value,并且默认值为空字符串。在类中,myMethod方法使用了自定义的注解,并为其value成员变量赋值。Java注解为我们的代码带来了极大的便利和扩展性。通过内置注解、元注解以及自定义注解,我们可以在不同阶段为程序元素添加丰富的元数据,并在编译期、运行时进行相应的处理。合理运用注解,能够使代码更加清晰、可维护,提升开发效率。 阅读详情

1. JDK中预定义的注解

1.@Override - 检查该方法是否是重写方法。如果发现其父类,或者是引用的接口中并没有该方法时,会报编译错误。
2.@Deprecated - 标记过时方法。如果使用该方法,会报编译警告。
3.@SuppressWarnings(“all”) - 指示编译器去忽略注解中声明的警告。

2. 自定义的注解

public @interface MyAnn {//注解本质上是个接口,默认继承了Annotation接口
    //注解中可以定义的类型
    //1.基本数据类型
    public abstract int age(); //赋值方式(age="")
    //2.Stirng类型
    String name() default "张三";//在赋值的时候可以选择默认
    //3.枚举
    //4.以上类型的数组
    int [] ints(); //赋值方式(ints={1,2,3})
    String value();//如果只有一个属性,且属性名叫value的时候,赋值可以省略value名称
}

3.元注解

@Retention - 标识这个注解怎么保存,是只在代码中,还是编入class文件中,或者是在运行时可以通过反射访问。
@Documented - 标记这些注解是否包含在用户文档中。
@Target - 标记这个注解应该是哪种 Java 成员。
@Inherited - 标记这个注解是继承于哪个注解类(默认 注解并没有继承于任何子类)
从 Java 7 开始,额外添加了 3 个注解:
@SafeVarargs - Java 7 开始支持,忽略任何使用参数为泛型变量的方法或构造函数调用产生的警告。
@FunctionalInterface - Java 8 开始支持,标识一个匿名函数或函数式接口。
@Repeatable - Java 8 开始支持,标识某注解可以在同一个声明上使用多次。

@Target(value={ElementType.TYPE,ElementType.METHOD,ElementType.FIELD})//只能作用与类
//中 1.TYPE作用于类 2.METHOD作用于方法上 3.FIELD作用于成员变量
@Retention(RetentionPolicy.RUNTIME)//注解被保留的阶段
@Documented//是否存在doc文档中
@Inherited //描写注解是否被子类继承

4. 解析注解

如何获取注解中的属性值

@Pro(className = "demo06.Demo02",methodName = "sleep")
public class Test02 {
    public static void main(String[] args) throws Exception{
        Class<Test02> aClass = Test02.class;//使用本类的class
        //找到Pro接口/注解,意思是实现了Pro接口中的抽象方法,返回值为(className = "demo06.Demo02",methodName = "sleep")
        Pro pro = aClass.getAnnotation(Pro.class);
        //获取className、methodName
        String className = pro.className();
        String methodName = pro.methodName();
        System.out.println(className);
        System.out.println(methodName);
    }
}

5. 用注解代替配置文件

@Pro(className = "demo06.Demo02",methodName = "sleep")
public class Test02 {
    public static void main(String[] args) throws Exception{
        Class<Test02> aClass = Test02.class;//使用本类的class
        //找到Pro接口/注解,意思是实现了Pro接口中的抽象方法,返回值为(className = "demo06.Demo02",methodName = "sleep")
        Pro pro = aClass.getAnnotation(Pro.class);
        //获取className、methodName
        String className = pro.className();
        String methodName = pro.methodName();
        System.out.println(className);
        System.out.println(methodName);

        //2.有了类与方法
        Class bClass = Class.forName(className);//加载类文件
        Object o = bClass.newInstance();//调用空参构造方法去创建对象
        Method method1 = bClass.getMethod(methodName);//获取需要被执行的方法
        method1.invoke(o);//调用方法
    }
}
【Java基础知识 13】java注解详解 一、注解简介 Java注解用于为Java代码提供元数据。 元数据是指用来描述数据的数据,通俗一点,就是描述代码间关系,或者代码与其它资源(例如数据库表)之间内在联系的数据。在一些技术框架中,如Struts、hibernate就不知不觉用到了元数据。对于Struts来说,元数据指的是struts-config.xml;对hibernate来说就是hbm文件。以上阐述的几种元数据都是基于xml文件的或者其他形式的单独配置文件。这样表示有些不便之处。1、与被描述的文件分离,不利于一致性的维护;2、所有这样.. 阅读详情

相关推荐

CESM笔记——CESM1.0-CESM1.2.2-CESM2.1.3三个版本模式工作流对比

最近测试了CESM1.0,CESM1.2.2和CESM2.1.3三个版本,不同版本在workflow上有一些区别,来做点笔记。 CESM1.0 测试compset:B_2000,F_2000 workflow: 1. create_newcase -case ~/CESM/cesm1_0/script/B_2000 -compset B_2000 -res f19_g16 -mach tianhe 2. cd B_2000 (optional) env_mach_pes.xml ##修改核数,

砍柴姑娘Jourosy的博客 4946

重启Java程序的方法

1.引言 1.1背景问题 一个spring boo应用程序每天定时执行一次。 启动时,内存占用800M,结算后占用6G。 执行后,堆内存实际使用1G,但分配的内存达6G。 调整以下JVM参数,只能降到3G,不确定是否延长了处理时间。 -XX:MaxHeapFreeRatio=10 -XX:MinHeapFreeRatio=10 目标是使程序执行后,能够恢复到接近启动时的内存消耗规模...

wherwh的专栏 1万+

NXP(imx8qxp)系列DDR校准以及android镜像烧录

文章目录一、 不得不吐槽以下nxp的这个代码镜像烧写的过程,做得太开源了,导致镜像根本烧录不进去,实属令人头痛。 一、

永不秃头的程序员的博客 5991

重启java_让Java程序自动重启的实现方法(推荐)

要让一个java程序自动重启还真不容易的,重启分两步,首先是结束程序,这个简单,只要运行System.exit()就可以了。然后是启动,这个就难了,这个时候程序都已经结束了,就像一个人死了就不可能再自己站起来,怎么办呢?让别人帮他扶起来,幸运的是,我也有这样的条件,我要重启的那个程序并不孤独,还有另一个java程序和它一起在运行,我只要让运行着的那个程序来启动它就可以了。但运行着的那个程序它怎么知...

weixin_29299807的博客 1457

车辆横向控制MPC实战:从‘老王模型’到CasADi求解的保姆级避坑指南

本文详细解析了车辆横向控制MPC的实战应用,从经典动力学模型选择到CasADi求解器的优化配置,提供了一套完整的避坑指南。重点介绍了车辆动力学模型的验证要点、CasADi环境的高效配置技巧以及MPC问题建模的核心要素,帮助开发者快速实现稳健的横向控制方案。

weixin_42524499的博客 346

学 Simulink—— 基于储能系统(BESS)并网逆变器的 削峰填谷(Peak Shaving & Valley Filling)功能仿真

本文详细介绍了基于储能系统(BESS)并网逆变器的削峰填谷功能Simulink仿真方法。主要内容包括:1)削峰填谷原理与典型日负荷曲线控制逻辑;2)简化系统拓扑与关键参数设置;3)分步骤建模过程,重点讲解EMS控制逻辑、SOC模型和PQ控制实现;4)典型仿真结果分析及参数调优建议;5)常见问题解决方案和工程扩展方向。通过该仿真可掌握BESS在用户侧储能、虚拟电厂等场景的核心应用,实现电网侧功率按峰谷时段规划、BESS充放电控制及并网逆变器PQ控制。文章还提供了完整的BESS/微网系列课程框架和混合微网系统进

xiaoheshang_123的博客 42

Java多线程start()函数和run()函数

线程的状态在Java中,线程通常有五种状态:创建,就绪,运行,阻塞和死亡.其中:创建状态:在生成线程对象,并没有调用该对象的star方法,这时线程处于创建状态。就绪状态:当调用了线程对象的start方法之后,该线程就进入就绪状态。但是此时线程调度程序还没有把    该线程设置为当前线程,此时处于就绪状态。在线程运行之后,从等待或者睡眠中回来之后,也会处    于就绪状态。运行状态:线程调度程序将处...

天高地阔的专栏 1万+

【AI智能体】全场景AI智能体工作台WorkBuddy实战操作详解

全场景AI智能体工作台WorkBuddy实战操作详解

congge 5535

restart函数 详细解释

sconst.inc proc.h P_STACKBASEequ0typedef struct s_...

weixin_34087503的博客 976

RAG系统中Reranker模型选型实战

本文详细介绍了RAG系统中Reranker模型选型实战,希望能对学习RAG的同学们有所帮助。 文章目录 1. 前言 2. 思路解析 3. 测评数据集构建 3.1 步骤一 3.2 步骤二 3.3 数据示例 3.4 总结 4. 实战代码 4.1 本地模型 4.2 使用第三方的Reranker模型API

herosunly的博客 17万+

uniapp [全端兼容] - 实现连接蓝牙电子秤+监听数据转换并实时返回示例代码,uniApp实现BLE蓝牙连接多个电子秤设备、蓝牙通讯协议对接详细教程(全平台兼容H5、微信小程序、苹果安卓App)

uniapp连接蓝牙电子秤,uniapp如何连接电子秤蓝牙,蓝牙称重,实现监听数据转换并实时返回,多蓝牙,uni-app电子秤16进制蓝牙通讯协议对接,uniapp微信小程序蓝牙获取电子秤的值,uniapp蓝牙称重电子秤,蓝牙电子秤硬件,APP端连接蓝牙秤获取重量实时显示在页面上蓝牙秤,插件组件,蓝牙连接失败,uniapp安卓苹果ios连接蓝牙电子秤没反应,uniapp微信小程序 蓝牙低功耗连接发送数据监听接收,uni-app小程序蓝牙连接、读写数据全过程,uniapp连接蓝牙体脂秤,蓝牙搜索不到怎么办,如

🏆 前端领域优质创作者 1万+

【重拾Java系列】—— 接口

并非关于接口的全部知识点,自己的查缺补漏笔记

欢迎来到我的世界 623

作为一名爬虫人如何实现千万级数据爬取?

爬虫门槛不高,高就高在往后余生的每一次实操都随时会让你崩溃!Bro

吴秋霖的博客 1万+

Java基础——注解

文章目录1. 引言2. 语法规范2.1 继承的Annotation父接口2.2 @Target中的参数ElementType2.3 @Retention中的参数RetentionPolicy2.4 成员变量3. 获取注解信息3.1 使用场景——框架初始化过程中递归获取注解以及注解的注解3.2 使用场景——框架初始化过程中模拟扫描jar包和文件夹中的所有注解4. Spring中的注解模式 1. 引言...

Littlemotor 9306

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Java 基础 - 注解机制详解

当我们理解了内置注解, 元注解和获取注解的反射接口后,我们便可以开始自定义注解了。定义自己的注解Retention;Target;使用注解} }} }} }Annotation;

珍惜当下 1272

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

【Java基础】注解——自定义注解

public @interface 注解名{}看起来和定义接口很相似只是多了一个@符号 接口:public interface 接口名注解:public @interface 注解名。

橙子的博客 5828

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

【Java 基础篇】Java 注解详解

注解是一种标记在 Java 类、方法、字段和其他程序元素上的特殊标签。这些标签提供了有关元素的额外信息,通常以注解的方式存储在 Java 源代码中。注解通常不影响程序的运行,但可以在编译时、运行时或通过工具进行处理。Java 注解以符号开头,后跟注解的名称,如@Override等。注解可以有元素,元素以键值对的形式存储信息。// 类的内容在上面的示例中,@Author是一个自定义注解,具有两个元素name和date,它们存储了有关类MyClass的信息。

繁依Fanyi的博客 1822

【Java 基础 - 注解机制详细解释】

定义自己的注解使用注解@Override用反射接口获取注解信息try {// 获取所有methods// 遍历// 方法上是否有MyMethodAnnotation注解try {// 获取并遍历方法上的所有注解// 获取MyMethodAnnotation对象信息测试的输出最为常见的就是使用Spring AOP切面实现统一的操作日志管理,我这里找了一个开源项目中的例子(只展示主要代码),给你展示下如何通过注解实现解耦的。

abclyq的博客 949

Java基础——注解(Annotation)基础

Java注解(Annotation)又称Java标注,是 JDK5.0 引入的一种注释机制。注解是元数据的一种形式,提供有关于程序但不属于程序本身的数据。注解对它们注解的代码的操作没有直接影响。元数据:描述数据的数据。

liang-jy的博客 884

Java基础-注解

注解是 Java 中一种强大的元数据机制,它通过 “标记 + 解析” 的方式,为代码提供灵活的扩展能力。理解注解的核心是:它不直接参与业务逻辑,而是作为 “桥梁” 连接代码与工具 / 框架,让外部系统根据注解信息做出相应处理。在实际开发中,合理使用注解(结合反射或处理器)能显著提升代码的简洁性和可扩展性。

weixin_43578751的博客 673

扫盲java基础-注解

一、基础知识 1、注解是jdk1.5版本提供的一个特征:@Deprecated:标识使用方法已经被放弃,但是还可以使用 @SuppressWarnings("all") //@SunppressWarnings("uncheck") 取消警告操作 2、元注解:不能包含其他注解的注解(元数据) @Documented 生成 JavaDoc文档的时候会生成在文件中 @Retetion 代表该注解的作...

Brave_heart4pzj的博客 4231

Java基础-注解机制详解

Java注解机制的一点总结

令狐_JackieHao的博客 1217

Java基础之注解机制 - 详解

当我们理解了解了标准注解与元注解之后,就可以进行撰写自定义注解了。定义注解/*** 自定义注解*///默认为""//默认为""使用定义的注解@Override用反射接口获取注解信息main方法定义在使用注解的类中进行测试try {// 获取所有methods// 遍历// 方法上是否有MyMethodAnnotation注解try {// 获取并遍历方法上的所有注解+ method +// 获取MyMethodAnnotation对象信息。

m0_74440466的博客 1023

Java基础-注解、元注解

注解 Java注解也称Java标注,是jdk1.5(5.0)后的新特征。Java语言中的类、方法、变量、参数和包等都可以被标注。和Javadoc不同,Java注解可以通过反射获取标注内容,在编译器生成类文件时,标注可以被嵌入到字节码中,Java虚拟机可以保留标注内容,在运行时可以获取到标注内容,当然它也支持自定义Java标注 功能:用于说明程序 用途:一般用在框架中使用 格式:@AnnotationName 文档注释: ​ @param @return @Exception从根本上是一个注释,不存在代码编译

Love&Share 3374
上一篇: 第十天Java基础增强(反射)
下一篇: 第十一天sql基础
RestartJava
博客等级 码龄7年 1粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值