Есть ли способ, чтобы получить уведомление о всех вызовах в конструктор класса String (либо непосредственно, либо с помощью отражения) без переплетения или инструментирование rt.jar?Уведомление любого струнного строительства объекта в Java 8 HotSpot VM
Кроме того, возможно ли отфильтровать эти уведомления только для вызовов внутри определенного пакета?
Далее возможно сделать эти уведомления асинхр (например, события), так что фактическая JVM вызовы не замедлили
Мой вариант использования для перехвата всех строк создается, сватать шаблон на контент и повышать изменения, основанные на некоторых правилах (все в backend) как часть некоторого компонента платформы.
Поскольку я не хочу использовать инструмент rt.jar, AspectJ, кажется, не может быть и речи (поскольку LTW не может быть выполнено в базовых классах Java). Потенциальный инструмент кажется JVM TI, но я не совсем уверен, как его достичь.
Спасибо, Хариш
Почему нет приборов? Он предназначен именно для таких вещей, как вы хотите. API-интерфейс RetransformClasses' может сделать трюк перехвата. И да, это работает и для основных классов. – apangin
Я знаю, что вы этого не хотите, но инструмент _rt.jar_ через двоичное плетение AspectJ - это не ракетостроение.Я сделал это однажды, просто для удовольствия. – kriegaex
@apangin попробует RetransformClasses. Подумал, существует ли асинхронный способ получения событий, чтобы выполнение основного кода не выполнялось во время выделения объекта. – Harish