3

我曾经java.lang.instrument.Instrumentation#redefineClasses()重新定义现有的类。有时,我需要重新定义几个类。

如果我一一重新定义课程,我会知道哪些是成功的,哪些是失败的。

但是将重新定义的类放在一个数组中以获得更高的正确性会更好吗?

4

2 回答 2

1

如果我一一重新定义班级,我就会知道哪个是成功,哪个是失败。

真的。

但是将重新定义的类放在一个数组中以获得更高的正确性会更好吗?

我没有明白你所说的更正确的意思!但是,无论如何,根据我的理解,在一个类与另一个类相互依赖的情况下,使用一组类(数组)可能特别有用。因此,在这种情况下,您可以通过在此方法中传递这两个类来重新定义它们。


此外,接口检测的 Java 文档说:

此方法用于在不参考现有类文件字节的情况下替换类的定义,就像在从源代码重新编译以进行修复并继续调试时所做的那样。

...

此方法对集合进行操作,以便允许同时对多个类进行相互依赖的更改(重新定义 A 类可能需要重新定义 B 类)。

但是,请记住:

如果此方法抛出异常,则没有重新定义任何类。

于 2016-08-30T14:50:47.707 回答
1

与单独传递每个类相比,批量检测类的性能要高得多。

JVM 需要停止应用程序以应用重新定义,这是一项相当昂贵的操作,因此值得分组。

此外,分组允许类的相互依赖的变化。

于 2016-08-31T05:36:02.193 回答