gpt4 book ai didi

Java 反射 : How do I override or generate methods at runtime?

转载 作者:IT老高 更新时间:2023-10-28 20:22:32 25 4
gpt4 key购买 nike

在纯 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/

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