Вызывается ли конструктор объекта при создании массива в Java?
-
19-08-2019 - |
Вопрос
В Java массив ЯВЛЯЕТСЯ ОБЪЕКТОМ.Мой вопрос...вызывается ли конструктор объекта при создании новых массивов?Мы хотели бы использовать этот факт, чтобы снабдить конструктор объекта дополнительным байт-кодом, который проверяет длину создаваемого массива.Это сработает?
Решение
Что касается спецификации языка Java, хотя оба используют ключевое слово new
, Выражения создания экземпляров класса и Выражения создания массива - это разные формы выражений, каждый со своими правилами. В описании выражений создания массива не упоминается вызов конструктора.
Другие советы
Согласно спецификации JVM : " Массивы создаются и обрабатываются с использованием определенного набора инструкций. " Таким образом, хотя массивы являются экземплярами Objects, они не инициализируются так же, как другие объекты (что вы можете увидеть, прокручивая этот ссылочный якорь вверх).
Я так не думаю, потому что вы не можете получить собственный массив для переопределения конструктора
Вы можете использовать манипуляцию с байтовым кодом для установки проверки там, где создается новый массив.
Неа.Я нашел это в списке рассылки AspectJ: http://dev.eclipse.org/mhonarc/lists/aspectj-users/msg02975.html.
Вероятно, вы не просто так спрашиваете о массивах, но если можете, то почему бы не переключиться на классы-коллекции.Это даст вам много возможностей перехватывать и выполнять проверки.