2016-08-30 3 views
3

Я использовал java.lang.instrument.Instrumentation#redefineClasses() для переопределения существующих классов. Иногда мне нужно переопределить несколько классов.Когда я использую java.lang.instrument.Instrumentation # redefineClasses(), должен ли я передать массив функции?

Если я переопределю классы один за другим, я буду знать, какие из них были успешными и какие из них не удались.

Но лучше ли добавлять классы, переопределенные в массиве, чтобы получить более правильную информацию?

+0

Просьба уточнить вашу конкретную проблему или добавить дополнительные сведения, чтобы точно указать, что вам нужно. Как это написано в настоящее время, трудно точно сказать, что вы просите. – abarisone

ответ

1

Если я переопределяю класс один за другим, я буду знать, что успех, который не удалось.

Истина.

Но лучше ли переставлять классы, переопределенные в массиве, чтобы получить правильность ?

Я не понял, что вы имели в виду, более правильно! Но, как бы то ни было из моего понимания, использование набора (массива) классов может быть особенно полезно в случае, когда существует взаимозависимость одного класса в другом классе. Таким образом, в этом случае вы можете переопределить оба класса, передав их в этом методе.


Кроме того, Java Documentation of Interface Instrumentation говорит:

Этот метод используется, чтобы заменить определение класса без ссылки на существующие байты файла класса, как можно было бы сделать, когда перекомпиляции из источника затруднительного -and-продолжить отладку.

...

Этот метод работает на множестве, чтобы позволить взаимозависимые изменения более чем одного класса, в то же время (переопределение класса А может требовать переопределение класса В).

Но, имейте помните:

Если этот метод генерирует исключение, классы не были пересмотрены.

0

Он намного более эффективен для классов приборов в партии по сравнению с прохождением каждого класса по отдельности.

JVM должен остановить приложение для применения переопределения, которое является довольно дорогостоящей операцией, поэтому стоит группировать.

Кроме того, группировка допускает взаимозависимые изменения классов.