Java 8是否有可能在使用反射或其他方法的方法中插入代码?

问题描述 投票:2回答:2

是否有可能在我无法编辑的其他类的方法中插入代码?

这是我无法编辑的示例类,因为我不是所有者

package me;

public class Test {

    public Test() {

    }

    public void doSomething() {
        System.out.println("im doing something...");
    }

}

而且我想在我的班级中使用一个事件方法是

//should fire when Test.doSomething is called
    public static void onDoSomethingEvent() {

    }

我想添加onDoSoSomethingEvent();测试中的doSomething方法。

Method method = Class.forName("me.Test").getDeclaredMethod("doSomething");
            method.setAccessible(true);
            //is there something in some lib or else like this?
            //method.insert("Main.onDoSomethingEvent()");
    ```


java methods reflection insert overwrite
2个回答
0
投票

另一种方法是,您可以创建一个扩展Test的类,并以您自己的方式覆盖doSomething()


0
投票

不是我知道。我认为那将是一个安全漏洞。但是,如果您有权访问生成事件的内容,则可以执行以下操作:

class MyClass extends Test {
   @Override doSomething() {
     super.doSomething(); // to invoke super class method.
    //your code here
    }
}

现在将MyClass的实例添加为该事件的listener

© www.soinside.com 2019 - 2024. All rights reserved.