java - 如何在 Java 运行时生成现有类的字节码?
问题描述
如何在 Java 运行时生成现有类的字节码?
我现有的课程是说Foo.java
public class Foo {
public String saySomething() {
return "Hello World";
}
}
现在我想生成这个现有类的字节码,Foo.java
并可能在另一个 JVM 实例中使用它。请理解我没有在运行时创建一个类,因为我已经有一个名为Foo.java
. 打开任何库,如 ASM 或 ByteBuddy 等。
解决方案
你不需要一个库,任何类文件都只是一个资源,就像任何其他可以通过Foo.class.getResource("Foo.class")
. 您可以像读取任何其他资源一样打开此资源的流并读取其字节。
如果您已经在使用 Byte Buddy,则可以通过以下方式获取字节:ClassFileLocator.ForClassLoader.read(Foo.class)
但如果您只需要这些,那么使用库将是一种矫枉过正。
推荐阅读
- sql-server - SQL Server 聚合可能包含多个副本的数据
- javascript - 数组文本上的.innerHTML?
- git - 如何在 GitHub 中列出存储库的所有标签?
- python - 加载 http://0.0.0.0:27017 时,Mac os 上的 Docker mongodb 连接被拒绝
- angular - 如何在自定义控件中添加所需的星号?
- laravel - Laravel Job 无法识别对象属性
- tensorflow - 神经网络立即过拟合
- gcloud - 谷歌云壳在哪个地区?
- java - 为什么 Lombok @Builder 与此构造函数不兼容?
- python - 熊猫数据框的形状到 3d 数组