gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 01:58:49 27 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() 是静态,因为在做了“魔法”之后它是从不同的类实例调用的(它是 Overrider),(因此我们阻止它访问本地字段)。

最佳答案

您可以使用类似 cglib 的内容用于即时生成代码

关于Java反射: How do I override or generate methods at runtime?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57385900/

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