Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 有没有办法在运行时获取类的字节码?_Java_Runtime_Bytecode - Fatal编程技术网

Java 有没有办法在运行时获取类的字节码?

Java 有没有办法在运行时获取类的字节码?,java,runtime,bytecode,Java,Runtime,Bytecode,在Java中,是否有方法(在运行时)获取定义特定类的字节码 换句话说,当加载特定类时,是否有方法获取传递给类加载器的字节[]数组。defineClass(字符串名,字节[]b,int off,int len)?我看到这个方法被声明为final,所以创建一个自定义类加载器来截取类定义似乎是不可能的 过去,我使用类的ClassLoader通过getResourceAsStream(String)方法获取字节码,但我更喜欢更规范的解决方案。“Java代理”将是显而易见的解决方案。描述了如何实现代理ge

在Java中,是否有方法(在运行时)获取定义特定类的字节码

换句话说,当加载特定类时,是否有方法获取传递给类加载器的
字节[]
数组。defineClass(字符串名,字节[]b,int off,int len)?我看到这个方法被声明为
final
,所以创建一个自定义
类加载器来截取类定义似乎是不可能的


过去,我使用类的
ClassLoader
通过
getResourceAsStream(String)
方法获取字节码,但我更喜欢更规范的解决方案。

“Java代理”将是显而易见的解决方案。

描述了如何实现代理
getResourceAsStream(String)的原因
not canonical?@Riduidel:并非所有类加载器都将字节码作为资源公开。例如,一些自定义类加载器会动态生成字节码,在调用
getResourceAsStream
时不会返回字节码。这可能是一个愚蠢的问题,但为什么需要获取给定类的字节码?您可能不想使用getResourceAsStream,因为某些类可能由另一个类加载器加载?@Geoff:我实际上希望调试符号有助于在运行时根据以下问题推断方法参数名称:@Geoff:过去,我使用该类的类加载器(与当前线程的类加载器或系统类加载器相反)以增加查找字节码的几率。有趣的是,我以前从未听说过代理!