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

StackOverflow https://stackoverflow.com/questions/474896

Вопрос

В Java массив ЯВЛЯЕТСЯ ОБЪЕКТОМ.Мой вопрос...вызывается ли конструктор объекта при создании новых массивов?Мы хотели бы использовать этот факт, чтобы снабдить конструктор объекта дополнительным байт-кодом, который проверяет длину создаваемого массива.Это сработает?

Это было полезно?

Решение

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

Другие советы

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top