如何实现 Java 替换 或 热替换 rt.jar 里的 一个方法?

public class Main{
    public staic void main(String[] args){
        System.out.println(Class.forName("a.b.old.C"));
    }
}

由于某些特殊需求,需要 把 Class.forName 改掉,当使用该方法时,如果传入的类的包名包含某一段路径,就替换成另外一段路径。比如 Class.forName("a.b.old.XXX") 获取到的类将是 "a.b.new.XXX"。

请教一下,如何才能实现上诉效果,且不能修改rt.jar

阅读 1.5k
评论
    3 个回答
    • 237

    可以在Class.forName外包一层。

    void loadClass(String name){
        if("xxx".equals(name)){
            name = "newName";
        }
        Class.forName(name);
    }
      相似问题
      推荐文章