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

【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”);
    • 查询或修改

      • 构造方法实例化 .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 反射机制

反射机制 之前学过一部分&#xff0c;笔记在20250103Java包_网络编程.md里,这里在之前的笔记的基础上做一些补充。 反射&#xff1a;得到class对象后反向获取对象的各种信息。 包 Field 类或接口中的字段(成员变量)&#xff0c;动态访问和修改类的字段 模板 获取Class 对象 …...

【沉默的羔羊心理学】汉尼拔的“移情”游戏:操纵与理解的艺术,精神分析学视角下的角色互动

终极解读《沉默的羔羊》&#xff1a;弗洛伊德精神分析学视角下的深层剖析 关键词 沉默的羔羊弗洛伊德精神分析学角色心理意识与潜意识性别与身份 弗洛伊德精神分析学简介 弗洛伊德的精神分析学是心理学的一个重要分支&#xff0c;主要关注人类行为背后的无意识动机和冲突。…...

[深度学习] 大模型学习1-大语言模型基础知识

大语言模型&#xff08;Large Language Model&#xff0c;LLM&#xff09;是一类基于Transformer架构的深度学习模型&#xff0c;主要用于处理与自然语言相关的各种任务。简单来说&#xff0c;当用户输入文本时&#xff0c;模型会生成相应的回复或结果。它能够完成许多任务&…...

如何解决数据库和缓存不一致的问题

目录 一、Cache-Aside模式&#xff08;旁路缓存模式&#xff09; 二、Write-Through模式&#xff08;写透缓存模式&#xff09; 三、Write-Behind模式&#xff08;写回缓存模式&#xff09; 四、先删除缓存再更新数据库&#xff08;不推荐&#xff0c;存在风险&#xff09;…...

剑指Offer|LCR 021. 删除链表的倒数第 N 个结点

LCR 021. 删除链表的倒数第 N 个结点 给定一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], n 2 输出&#xff1a;[1,2,3,5]示例 2&#xff1a; 输入&#xff1a;head [1], n 1…...

【NX入门篇】

NX入门篇 一、UG NX 由来二、软件如何启动&#xff08;UG NX 12.0&#xff09;三、使用步骤四、常用命令 一、UG NX 由来 UG NX由来&#xff1a; 1969 年&#xff1a;UG 的开发始于美国麦道航空公司&#xff0c;基于 C 语言开发实现&#xff1b;1976 年&#xff1a;UG问世&am…...

ubuntu如何禁用 Snap 更新

.禁用 Snap 更新&#xff08;通过修改 snapd 配置&#xff09; 打开并编辑 /etc/apt/apt.conf.d/50unattended-upgrades文件。 这个文件控制自动更新的行为。 sudo vim /etc/apt/apt.conf.d/50unattended-upgrades 里面有一行将里面的auto改为false即可禁用更新&#xff1a;…...

Spring AI Alibaba-对话模型(Chat Model)

对话模型&#xff08;Chat Model&#xff09;接收一系列消息&#xff08;Message&#xff09;作为输入&#xff0c;与模型 LLM 服务进行交互&#xff0c;并接收返回的聊天消息&#xff08;Chat Message&#xff09;作为输出。相比于普通的程序输入&#xff0c;模型的输入与输出…...

HTML——79.代码快捷输入方式

!DOCTYPE html> <html><head><meta charset"UTF-8"><title>代码快捷输入方式</title></head><body><!--1.父子关系&#xff1a;--><!--div>p 加Tab键--><div><p></p></div><…...

李宏毅机器学习课程笔记01 | 1.Introduction of Machine/Deep Learning

笔记是在语雀上面做的&#xff0c;粘贴在CSND上可能存在格式错误 机器学习的本质就是借助机器寻找一个转换函数 根据函数的输出类型&#xff0c;可以将机器学习进行分类 regression 回归任务&#xff1a;函数输出时一个数值classification 分类任务&#xff1a;人类设定好选项…...

1、pycharm、python下载与安装

1、去官网下载pycharm 官网&#xff1a;https://www.jetbrains.com/pycharm/download/?sectionwindows 2、在等待期间&#xff0c;去下载python 进入官网地址&#xff1a;https://www.python.org/downloads/windows/ 3、安装pycharm 桌面会出现快捷方式 4、安装python…...

计算机网络复习(学习通作业4、5、6系统答案)

&#x1f4e2;&#x1f4e2;&#x1f4e2;传送门 一、作业4一. 计算题&#xff08;共1题&#xff0c;100分&#xff09; 二、作业5一. 简答题&#xff08;共1题&#xff0c;30分&#xff09;路由器属于那一层的互联设备&#xff1f;路由器结构包含哪两个部分&#xff1f;请解释…...

javascript 绘制图表的几种方式

JavaScript 中,绘制图表的常用方法是使用图表库,它们提供了便捷的 API 和功能来实现图形和数据可视化。以下是几种常见的 JavaScript 图表绘制库以及如何使用它们来绘制图表的示例: 1. Chart.js Chart.js 是一个轻量级、简单易用的图表库,支持多种图表类型,如线性图、柱…...

【网络协议】开放式最短路径优先协议OSPF详解(四)

前言 在本章的第一部分和第二部分中&#xff0c;我们探讨了OSPF的基本配置&#xff0c;并进一步学习了更多OSPF的概念&#xff0c;例如静态路由的重分发及其度量值。在第三部分中&#xff0c;我们讨论了多区域OSPF。在第四部分中&#xff0c;我们将关注OSPF与多访问网络&#…...

C++STL中algorithm的介绍与使用

C STL中的<algorithm>库提供了一组模板函数&#xff0c;用于操作序列&#xff08;如数组、向量等&#xff09;。以下是一些常用的<algorithm>函数的详细介绍、使用方式和示例&#xff0c;以及在竞赛过程中的一些细节。 1. 非修改性算法 std::find 概念&#xff…...

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问题其实实际都不是问题&#xff0c;不过是因为对runner的一些细节不清楚导致了误解。本文不系统性的介绍GitLab-Runner&#xff0c;因为这类文章写得好的特别多&#xff0c;本文只汇总一些常几的问题/注意事项。旨在让新手少弯路。 二、…...

ARM发布Armv9.5架构:迈向更强性能与灵活性的新时代

2024年11月30日&#xff0c;ARM正式发布了其最新的Armv9.5架构&#xff0c;这是Arm技术发展的又一重要里程碑。从表中信息来看&#xff0c;Armv9.5架构的发布标志着该公司的架构系列在性能、灵活性和可扩展性方面取得了进一步突破。本次发布不仅是技术上的提升&#xff0c;更是…...

网络安全:路由技术

概述 路由技术到底研究什么内容 研究路由器寻找最佳路径的过程 路由器根据最佳路径转发数据包 知识点&#xff0c;重要OSRF,BGP1.静态路由原理 路由技术分类 静态路由和动态路由技术 静态路由&#xff1a;是第一代路由技术&#xff0c;由网络管理员手工静态写路由/路径告知路…...

Vue3 子组件向父组件传递消息(Events)

子组件向父组件传递消息&#xff08;Events&#xff09; 子组件可以通过 $emit 触发事件&#xff0c;父组件可以监听这些事件并作出响应。 子组件&#xff1a; <template><button click"sendMessage">Send Message to Parent</button> </tem…...

Ubuntu系统下交叉编译openssl

一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机&#xff1a;Ubuntu 20.04.6 LTSHost&#xff1a;ARM32位交叉编译器&#xff1a;arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...

stm32G473的flash模式是单bank还是双bank?

今天突然有人stm32G473的flash模式是单bank还是双bank&#xff1f;由于时间太久&#xff0c;我真忘记了。搜搜发现&#xff0c;还真有人和我一样。见下面的链接&#xff1a;https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...

springboot 百货中心供应链管理系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;百货中心供应链管理系统被用户普遍使用&#xff0c;为方…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互

物理引擎&#xff08;Physics Engine&#xff09; 物理引擎 是一种通过计算机模拟物理规律&#xff08;如力学、碰撞、重力、流体动力学等&#xff09;的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互&#xff0c;广泛应用于 游戏开发、动画制作、虚…...

23-Oracle 23 ai 区块链表(Blockchain Table)

小伙伴有没有在金融强合规的领域中遇见&#xff0c;必须要保持数据不可变&#xff0c;管理员都无法修改和留痕的要求。比如医疗的电子病历中&#xff0c;影像检查检验结果不可篡改行的&#xff0c;药品追溯过程中数据只可插入无法删除的特性需求&#xff1b;登录日志、修改日志…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器

——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的​​一体化测试平台​​&#xff0c;覆盖应用全生命周期测试需求&#xff0c;主要提供五大核心能力&#xff1a; ​​测试类型​​​​检测目标​​​​关键指标​​功能体验基…...

今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存

文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...

深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用

文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么&#xff1f;1.1.2 感知机的工作原理 1.2 感知机的简单应用&#xff1a;基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...

mac 安装homebrew (nvm 及git)

mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用&#xff1a; 方法一&#xff1a;使用 Homebrew 安装 Git&#xff08;推荐&#xff09; 步骤如下&#xff1a;打开终端&#xff08;Terminal.app&#xff09; 1.安装 Homebrew…...

[ACTF2020 新生赛]Include 1(php://filter伪协议)

题目 做法 启动靶机&#xff0c;点进去 点进去 查看URL&#xff0c;有 ?fileflag.php说明存在文件包含&#xff0c;原理是php://filter 协议 当它与包含函数结合时&#xff0c;php://filter流会被当作php文件执行。 用php://filter加编码&#xff0c;能让PHP把文件内容…...