gpt4 book ai didi

java - 保存用反射修改的类的字节码

转载 作者:行者123 更新时间:2023-11-29 03:26:37 25 4
gpt4 key购买 nike

我有一个 java 模板类,我想修改其中的一个 String 字段。我可以实例化该类的一个对象,获取其相应的 Class 对象,并使用反射修改字段,到目前为止一切顺利。但是我如何将字节码实际保存到文件系统?

因为我认为如果我到达原始模板类的 ClassLoader,到达 InputStream 并尝试保存到文件,我将获得原始(即未修改的)类实现。是这样吗?

理想情况下,我还需要将类名更改为更有意义的名称。

这两件事可以首先使用纯 java 来完成吗?还是我必须求助于外部库?

最佳答案

当您使用反射修改字段时,您并没有更改类本身的任何内容。这只是设置变量的一种奇特方式。因此,首先无需担心字节码发生变化。

无论如何,据我所知,您无法在运行时轻松访问字节码。 JVM 从类文件(从文件或内存数据)创建类,但是一旦类被加载,就没有特别的理由保留数据。最有可能的是,它只会保留不一定对应于原始类文件的优化表示。

我认为有一些 API(例如 Java 代理)可以在运行时处理字节码,但尚不清楚它们的工作情况,部分原因是 JVM 确实进行了优化。

关于java - 保存用反射修改的类的字节码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20706391/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com