【Java回顾】Day4 反射机制
反射机制
之前学过一部分,笔记在20250103Java包_网络编程.md里,这里在之前的笔记的基础上做一些补充。
-
反射:得到class对象后反向获取对象的各种信息。
-
包
- Field 类或接口中的字段(成员变量),动态访问和修改类的字段
-
模板
-
获取Class 对象 .forName Class<?> clazz = Class.forName(“ReflectClass”);
-
获取
- 用Class类获取方法
- 获取构造方法**.getConstructor** Constructor<?> constructor = clazz.getConstructor(Class1.class, Class2.class);
- 获取成员方法**.getMethod** Method method = clazz.getMethod(“methodName”, ParamType1.class, ParamType2.class);
- 用Filed获取静态属性,例如成员变量属性 .getField Field staticField = clazz.getField(“staticFieldName”);
- 用Class类获取方法
-
查询或修改
- 构造方法实例化 .newInstance(" "); Object instance = constructor.newInstance(arg1, arg2);
- 设置成员变量值 set(instance,“UP”); field.set(instance, value);
- 调用成员方法 invoke(instance,“reflect”); Object result = method.invoke(instance, arg1, arg2);
- 获取静态属性 .get Object staticFieldValue = staticField.get(null);
-
模板
import java.lang.reflect.*;public class ReflectionTemplate {public static void main(String[] args) throws Exception {// 1. 获取 Class 对象Class<?> clazz = Class.forName("YourClassName"); // 替换为实际类名// 2. 获取构造方法并实例化对象Constructor<?> constructor = clazz.getConstructor(Class1.class, Class2.class); // 替换参数类型Object instance = constructor.newInstance(arg1, arg2); // 替换实际参数// 3. 获取静态属性Field staticField = clazz.getField("staticFieldName"); // 替换字段名Object staticFieldValue = staticField.get(null); // 获取静态属性值(null 表示静态字段)// 4. 设置成员变量值Field field = clazz.getField("fieldName"); // 替换字段名field.set(instance, value); // 设置对象字段值// 5. 获取成员方法并调用Method method = clazz.getMethod("methodName", ParamType1.class, ParamType2.class); // 替换方法名和参数类型Object result = method.invoke(instance, arg1, arg2); // 替换实际参数}
}
反射能做什么
-
动态加载类和实例化对象
-
动态调用方法
-
操作(修改和访问)字段
-
序列化与反序列化
- 序列化,将对象的状态转换为可存储或传输的字节流
- 反序列化,从字节流恢复对象,在反序列化过程中可以帮助实例化对象,即使我们不知道类
相关文章:
【Java回顾】Day4 反射机制
反射机制 之前学过一部分,笔记在20250103Java包_网络编程.md里,这里在之前的笔记的基础上做一些补充。 反射:得到class对象后反向获取对象的各种信息。 包 Field 类或接口中的字段(成员变量),动态访问和修改类的字段 模板 获取Class 对象 …...
【沉默的羔羊心理学】汉尼拔的“移情”游戏:操纵与理解的艺术,精神分析学视角下的角色互动
终极解读《沉默的羔羊》:弗洛伊德精神分析学视角下的深层剖析 关键词 沉默的羔羊弗洛伊德精神分析学角色心理意识与潜意识性别与身份 弗洛伊德精神分析学简介 弗洛伊德的精神分析学是心理学的一个重要分支,主要关注人类行为背后的无意识动机和冲突。…...
[深度学习] 大模型学习1-大语言模型基础知识
大语言模型(Large Language Model,LLM)是一类基于Transformer架构的深度学习模型,主要用于处理与自然语言相关的各种任务。简单来说,当用户输入文本时,模型会生成相应的回复或结果。它能够完成许多任务&…...
如何解决数据库和缓存不一致的问题
目录 一、Cache-Aside模式(旁路缓存模式) 二、Write-Through模式(写透缓存模式) 三、Write-Behind模式(写回缓存模式) 四、先删除缓存再更新数据库(不推荐,存在风险)…...
剑指Offer|LCR 021. 删除链表的倒数第 N 个结点
LCR 021. 删除链表的倒数第 N 个结点 给定一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 示例 1: 输入:head [1,2,3,4,5], n 2 输出:[1,2,3,5]示例 2: 输入:head [1], n 1…...
【NX入门篇】
NX入门篇 一、UG NX 由来二、软件如何启动(UG NX 12.0)三、使用步骤四、常用命令 一、UG NX 由来 UG NX由来: 1969 年:UG 的开发始于美国麦道航空公司,基于 C 语言开发实现;1976 年:UG问世&am…...
ubuntu如何禁用 Snap 更新
.禁用 Snap 更新(通过修改 snapd 配置) 打开并编辑 /etc/apt/apt.conf.d/50unattended-upgrades文件。 这个文件控制自动更新的行为。 sudo vim /etc/apt/apt.conf.d/50unattended-upgrades 里面有一行将里面的auto改为false即可禁用更新:…...
Spring AI Alibaba-对话模型(Chat Model)
对话模型(Chat Model)接收一系列消息(Message)作为输入,与模型 LLM 服务进行交互,并接收返回的聊天消息(Chat Message)作为输出。相比于普通的程序输入,模型的输入与输出…...
HTML——79.代码快捷输入方式
!DOCTYPE html> <html><head><meta charset"UTF-8"><title>代码快捷输入方式</title></head><body><!--1.父子关系:--><!--div>p 加Tab键--><div><p></p></div><…...
李宏毅机器学习课程笔记01 | 1.Introduction of Machine/Deep Learning
笔记是在语雀上面做的,粘贴在CSND上可能存在格式错误 机器学习的本质就是借助机器寻找一个转换函数 根据函数的输出类型,可以将机器学习进行分类 regression 回归任务:函数输出时一个数值classification 分类任务:人类设定好选项…...
1、pycharm、python下载与安装
1、去官网下载pycharm 官网:https://www.jetbrains.com/pycharm/download/?sectionwindows 2、在等待期间,去下载python 进入官网地址:https://www.python.org/downloads/windows/ 3、安装pycharm 桌面会出现快捷方式 4、安装python…...
计算机网络复习(学习通作业4、5、6系统答案)
📢📢📢传送门 一、作业4一. 计算题(共1题,100分) 二、作业5一. 简答题(共1题,30分)路由器属于那一层的互联设备?路由器结构包含哪两个部分?请解释…...
javascript 绘制图表的几种方式
JavaScript 中,绘制图表的常用方法是使用图表库,它们提供了便捷的 API 和功能来实现图形和数据可视化。以下是几种常见的 JavaScript 图表绘制库以及如何使用它们来绘制图表的示例: 1. Chart.js Chart.js 是一个轻量级、简单易用的图表库,支持多种图表类型,如线性图、柱…...
【网络协议】开放式最短路径优先协议OSPF详解(四)
前言 在本章的第一部分和第二部分中,我们探讨了OSPF的基本配置,并进一步学习了更多OSPF的概念,例如静态路由的重分发及其度量值。在第三部分中,我们讨论了多区域OSPF。在第四部分中,我们将关注OSPF与多访问网络&#…...
C++STL中algorithm的介绍与使用
C STL中的<algorithm>库提供了一组模板函数,用于操作序列(如数组、向量等)。以下是一些常用的<algorithm>函数的详细介绍、使用方式和示例,以及在竞赛过程中的一些细节。 1. 非修改性算法 std::find 概念ÿ…...
Oracle exp和imp命令导出导入dmp文件
目录 一. 安装 instantclient-tools 工具包二. exp 命令导出数据三. imp 命令导入数据四. expdp 和 impdp 命令 一. 安装 instantclient-tools 工具包 ⏹官方网站 https://www.oracle.com/cn/database/technologies/instant-client/linux-x86-64-downloads.html ⏹因为我们在…...
GitLab集成Runner详细版--及注意事项汇总【最佳实践】
一、背景 看到网上很多用户提出的runner问题其实实际都不是问题,不过是因为对runner的一些细节不清楚导致了误解。本文不系统性的介绍GitLab-Runner,因为这类文章写得好的特别多,本文只汇总一些常几的问题/注意事项。旨在让新手少弯路。 二、…...
ARM发布Armv9.5架构:迈向更强性能与灵活性的新时代
2024年11月30日,ARM正式发布了其最新的Armv9.5架构,这是Arm技术发展的又一重要里程碑。从表中信息来看,Armv9.5架构的发布标志着该公司的架构系列在性能、灵活性和可扩展性方面取得了进一步突破。本次发布不仅是技术上的提升,更是…...
网络安全:路由技术
概述 路由技术到底研究什么内容 研究路由器寻找最佳路径的过程 路由器根据最佳路径转发数据包 知识点,重要OSRF,BGP1.静态路由原理 路由技术分类 静态路由和动态路由技术 静态路由:是第一代路由技术,由网络管理员手工静态写路由/路径告知路…...
Vue3 子组件向父组件传递消息(Events)
子组件向父组件传递消息(Events) 子组件可以通过 $emit 触发事件,父组件可以监听这些事件并作出响应。 子组件: <template><button click"sendMessage">Send Message to Parent</button> </tem…...
从零实现富文本编辑器#5-编辑器选区模型的状态结构表达
先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...
Day131 | 灵神 | 回溯算法 | 子集型 子集
Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣(LeetCode) 思路: 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...
Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)
概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...
使用分级同态加密防御梯度泄漏
抽象 联邦学习 (FL) 支持跨分布式客户端进行协作模型训练,而无需共享原始数据,这使其成为在互联和自动驾驶汽车 (CAV) 等领域保护隐私的机器学习的一种很有前途的方法。然而,最近的研究表明&…...
涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战
“🤖手搓TuyaAI语音指令 😍秒变表情包大师,让萌系Otto机器人🔥玩出智能新花样!开整!” 🤖 Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制(TuyaAI…...
Device Mapper 机制
Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...
tomcat指定使用的jdk版本
说明 有时候需要对tomcat配置指定的jdk版本号,此时,我们可以通过以下方式进行配置 设置方式 找到tomcat的bin目录中的setclasspath.bat。如果是linux系统则是setclasspath.sh set JAVA_HOMEC:\Program Files\Java\jdk8 set JRE_HOMEC:\Program Files…...
第一篇:Liunx环境下搭建PaddlePaddle 3.0基础环境(Liunx Centos8.5安装Python3.10+pip3.10)
第一篇:Liunx环境下搭建PaddlePaddle 3.0基础环境(Liunx Centos8.5安装Python3.10pip3.10) 一:前言二:安装编译依赖二:安装Python3.10三:安装PIP3.10四:安装Paddlepaddle基础框架4.1…...
使用SSE解决获取状态不一致问题
使用SSE解决获取状态不一致问题 1. 问题描述2. SSE介绍2.1 SSE 的工作原理2.2 SSE 的事件格式规范2.3 SSE与其他技术对比2.4 SSE 的优缺点 3. 实战代码 1. 问题描述 目前做的一个功能是上传多个文件,这个上传文件是整体功能的一部分,文件在上传的过程中…...
结构化文件管理实战:实现目录自动创建与归类
手动操作容易因疲劳或疏忽导致命名错误、路径混乱等问题,进而引发后续程序异常。使用工具进行标准化操作,能有效降低出错概率。 需要快速整理大量文件的技术用户而言,这款工具提供了一种轻便高效的解决方案。程序体积仅有 156KB,…...
