在纯 Java 中可以覆盖类的方法 在运行时以编程方式(甚至创建新方法)?
即使我不在编译时知道类,我也希望能够做到这一点。
我所说的在运行时覆盖的确切含义:
abstract class MyClass{
public void myMethod();
}
class Overrider extends MyClass{
@Override
public void myMethod(){}
}
class Injector{
public static void myMethod(){ // STATIC !!!
// do actual stuff
}
}
// some magic code goes here
Overrider altered = doMagic(
MyClass.class, Overrider.class, Injector.class);
现在,这个调用...
altered.myMethod();
...将调用 Injector.myMethod() 而不是 Overrider.myMethod()。
Injector.myMethod() 是 static,因为,在做了“魔术”之后 它是从不同的类实例调用的(它是 Overrider), (所以我们阻止它访问本地字段)。
最佳答案
您可以使用 cglib 之类的内容即时生成代码
关于Java 反射 : How do I override or generate methods at runtime?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1054777/