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

JDK9+ Method.class.getDeclaredFields() Method实例将不能再直接通过反射修改

JDK9+更安全了,以下代码示例,原因见截图

Test Code
import sun.reflect.Reflection;import java.lang.reflect.Field;
import java.lang.reflect.Method;public class Base {public static void main(String[] args) throws Exception {Method m = Class1.class.getDeclaredMethod("getName");m.setAccessible(true);System.out.println(m.invoke(new Class1()));Class2 clazz2 = new Class2();/* jdk9+, return empty array */Field[] fields = Method.class.getDeclaredFields();/* jdk9+, failed */Field f = Method.class.getDeclaredField("clazz");f.setAccessible(true);/* replace the "getName" method field clazz from Class1 ot Class2 */f.set(m, clazz2.getClass());System.out.println(m.invoke(clazz2));}static class Class1 {public String getName() {return "Sub1";}}static class Class2 {public String getName() {return "Sub2";}}
}
Reflection.class
JDK8 的Reflection

在这里插入图片描述500

JDK20 的Reflection

在这里插入图片描述

来自最先进LLM的安慰

在这里插入图片描述

http://www.xdnf.cn/news/17283.html

相关文章:

  • GaussDB 数据库架构师修炼(六)-2 集群工具管理-重建备库
  • 三、Istio流量治理(二)
  • java 之 继承
  • 【0基础PS】PS工具详解--直接选择工具
  • 秋招笔记-8.6
  • 【2025CVPR-目标检测方向】FIRE:通过频率引导重建误差对扩散生成的图像进行鲁棒检测
  • 内核链表、栈区、队列
  • 微型导轨:智能家居抽屉的智能化应用
  • Kafka-exporter采集参数调整方案
  • C语言:指针(1-2)
  • 令牌桶限流算法
  • 蚊子咬人问题何时休:深度学习引领智能灭蚊新时代
  • 【C/C++】形参、实参相关内容整理
  • SpringBoot 整合Langchain4j 对接主流大模型实战详解
  • AI Infra与LLM的联系与差异
  • 《Transformer黑魔法Mask与Softmax、Attention的关系:一个-∞符号如何让AI学会“选择性失明“》
  • 【React 插件】@uiw/react-md-editor 使用教程:从基础使用到自定义扩展
  • 【自动驾驶】《Sparse4Dv3 Advancing End-to-End 3D Detection and Tracking》论文阅读笔记
  • [科普] 从单核到千核:Linux SMP 的“演化史”与工程细节
  • MySQL数据库索引及底层数据结构
  • 16-DS18B20-±0.5℃精度-12bitADC--55°C ~ +125°C
  • 如何测试一个机器是大端还是小端
  • 如何解决网页视频课程进度条禁止拖动?
  • 查看ubuntu server 的基本信息
  • ubuntu 22.04 中安装python3.11 和 3.11 的 pip
  • 自然语言处理的相关概念与问题
  • 如何给小语种视频生成字幕?我的实测方法分享
  • 从《中国开源年度报告》看中国开源力量的十年变迁中,Apache SeaTunnel 的跃迁
  • Numpy科学计算与数据分析:Numpy入门之多平台安装与基础环境配置
  • 学习 Android(十四)NDK基础