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

标签 java reflection code-generation runtime

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

相关文章:

java - 使用函数将元素添加到类数组。处理3中的 "Paint"

java - 重新写入java txt文件

C++ 代码生成

assembly - native 可执行文件的哪一部分(特别是)使其不可移植?

reflection - Scala:如何动态实例化对象并使用反射调用方法?

java - 在 Java 中生成 getters/setters(再次)

java - 如何在 JSP 中从该 XML 中提取值

java - 我怎样才能在我的 mainActivity 中实现这个类

java - 递归与反射的行为异常

python - 在Python中将列表动态分解为变量