我使用java.lang.instrument.Instrumentation#redefineClasses()
来重新定义现有的类。有时,我需要重新定义几个类。
如果我逐一重新定义课程,我会知道哪些课程成功,哪些课程失败。
但是将类重新定义在一个数组中以获得更多正确性是否更好?
答案 0 :(得分:1)
如果我逐一重新定义课程,我会知道哪个是成功,哪个是 失败。
真。
但是将数组中重新定义的类放在一起是否更好 更正确吗?
我没有通过更正确的方式得到你的意思!但是,无论如何,根据我的理解,在一个类与其他类相互依赖的情况下,使用一组(数组)类可能特别有用。因此,在这种情况下,您可以通过在此方法中传递它们来重新定义这两个类。
此外,Java Documentation of Interface Instrumentation说:
此方法用于替换没有的类的定义 引用现有的类文件字节,就像人们可能会做的那样 从源代码重新编译以进行修复并继续调试。
...
此方法对集合进行操作,以便允许同时对多个类进行相互依赖的更改(重新定义 A类可能需要重新定义B类。
但是,请记住:
如果此方法抛出异常,则不会重新定义任何类。
答案 1 :(得分:1)
与单独传递每个类相比,批处理类的性能要高得多。
JVM需要暂停应用重定义的应用程序,这是一项相当昂贵的操作,因此值得分组。
此外,分组允许类的相互依赖的更改。