Это конструктор объекта вызывается при создании массива в Java?

в Java массив является объектом. Мой вопрос... вызывается ли конструктор объектов при создании новых массивов? Мы хотели бы использовать этот факт для инструментирования конструктора объекта с некоторым дополнительным байт-кодом, который проверяет длину строящегося массива. Это сработает?

5 ответов


что касается спецификации языка Java, хотя оба используют new ключевое слово Выражения Создания Экземпляра Класса и Выражения Для Создания Массива различные формы выражения, каждая со своими собственными правилами. В описании выражений создания массива не упоминается вызов конструктора.


на спецификация JVM: "массивы создаются и управляются с помощью отдельного набора инструкций."Итак, в то время как массивы являются экземплярами объектов, они не инициализируются так же, как и другие объекты (что вы можете увидеть, если прокрутите вверх от этой привязки).


Я так не думаю, потому что вы не можете создать собственный массив в конструктор overridethe


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


Неа. Я нашел это в списке рассылки AspectJ:http://dev.eclipse.org/mhonarc/lists/aspectj-users/msg02975.html.

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