【发布时间】:2012-11-16 11:38:32
【问题描述】:
我想知道是否可以通过字节码操作来做这样的事情:
public class Foo {
public int getBlah() {
return 1;
}
}
public void hi(int x) {
System.out.println("hi: " + x);
}
public void hi(String x) {
System.out.println("wow: " + x);
}
现在我想打电话:
hi(foo.getBlah());
并调用 String 参数的重载 hi 方法。
【问题讨论】:
-
你到底在做什么?如果它只是关于字符串和整数,你可以解析/转换这些参数和返回类型。您应该尝试陈述您的问题,而不是将自己局限于字节码操作——通常没有必要使用它。
-
我想在运行时从一种方法转移到另一种方法,即使考虑到我的 getBlah() 方法的返回类型这看起来是不可能的。
-
你打算使用什么字节码库?而且这很有可能,我以前也做过类似的事情。
-
@Austin 你在开玩笑吧? :) Javassist 或 CGLIB,任你选择。
-
@JohnPristine 开什么玩笑?这些并不是唯一的图书馆。
标签: java proxy javassist cglib bytecode-manipulation