我已经在解决以下问题的解决方案上工作了一段时间。让我们说我有以下Java代码:
public class A {
public void start() {
List l = new ArrayList();
l.add("abc");
System.out.println( l.get(0) );
}
}
编译此代码的结果是包含Java字节代码的类文件A.class
。我写了ClassLoader
,加载A.class
并执行start()
。我打算用A.class
替换加载的new ArrayList()
(字节代码)MyArrayList()
:
//Before
List l = new ArrayList();
//After
List l = new MyArrayList();
课程MyArrayList
的定义与:class MyArrayList extends ArrayList
答案 0 :(得分:0)
您可以使用ASM之类的工具来解析文件,并将任何ArrayList
的匹配项替换为MyArrayList
。但是,这需要MyArrayList
定义与ArraysList
中定义的构造函数具有相同签名的构造函数。
下一个问题是您定义更改时。您有以下可能性: