Это конструктор объекта вызывается при создании массива в Java?
в Java массив является объектом. Мой вопрос... вызывается ли конструктор объектов при создании новых массивов? Мы хотели бы использовать этот факт для инструментирования конструктора объекта с некоторым дополнительным байт-кодом, который проверяет длину строящегося массива. Это сработает?
5 ответов
что касается спецификации языка Java, хотя оба используют new
ключевое слово Выражения Создания Экземпляра Класса и Выражения Для Создания Массива различные формы выражения, каждая со своими собственными правилами. В описании выражений создания массива не упоминается вызов конструктора.
на спецификация JVM: "массивы создаются и управляются с помощью отдельного набора инструкций."Итак, в то время как массивы являются экземплярами объектов, они не инициализируются так же, как и другие объекты (что вы можете увидеть, если прокрутите вверх от этой привязки).
вы можете использовать манипуляцию байтовым кодом для размещения проверки, где когда-либо создается новый массив.
Неа. Я нашел это в списке рассылки AspectJ:http://dev.eclipse.org/mhonarc/lists/aspectj-users/msg02975.html.
вы, вероятно, спрашиваете о массивах по какой-то причине, но если можете, почему бы не переключиться на классы коллекции. Это даст вам много возможностей для перехвата и проверки.