Рубрики
Без рубрики

Инициализация Java в двух словах

Добро пожаловать в Java Jeopardy! Алекс, я возьму Инициализацию за 500 долларов. “Блок кода, который использует Java… Помеченный java.

Добро пожаловать в Java Jeopardy!

Алекс, я возьму Инициализацию за 500 долларов.

“Блок кода, который компилятор Java копирует в каждый конструктор”.

Что такое блок инициализатора экземпляра.

Что сказать!?!?

Инициализация Java

В поле вряд ли можно увидеть что-либо, кроме стандартной инициализации конструктора. Однако, если вы пройдете Java Tutorial (“Java Trail”) по классам и объектам , вы узнаете, что Java поддерживает некоторые другие интересные способы инициализации как членов экземпляра, так и статических членов класса.

К ним относятся статические блоки инициализации, инициализация экземпляра и конечные методы. Я опишу каждый из них по очереди, но, скорее всего, вам будет легче испытать это на себе. В конце этого поста я включил в Github Суть класса Java, блоки инициализации В двух словах, используя все формы инициализации одновременно и выводя строку на консоль в каждой из них. Это простой способ увидеть порядок выполнения различных видов инициализации. Ради забавы попробуйте переставить их местами. Я обнаружил, что размещение окончательной инициализации метода ниже блока инициализации экземпляра, а не выше, изменило порядок их выполнения. То же самое произошло и с размещением статических блоков инициализации внутри класса. Берегитесь!

Блок статической инициализации

Как следует из термина, это блок кода для выполнения инициализации чего-либо в статическом контексте. Как таковой, он запускается, когда класс загружается в JVM. Если вам нужен простой способ понимания этого непрофессионалом, все члены, объявленные статическими, будут выполняться “сначала. ” Целью блока статической инициализации является инициализация любых статических членов класса. Одним из распространенных способов использования этого является заполнение любых коллекций (например, наборов или карт), которые класс использует в качестве справочного материала.

Блок инициализации

Как упоминалось выше, блоки инициализации являются одним из способов совместного использования кода между конструкторами. Вот что говорится в упомянутом Java Trail:

Компилятор Java копирует блоки инициализатора в каждый конструктор. Следовательно, этот подход может быть использован для совместного использования блока кода между несколькими конструкторами

Окончательная инициализация метода

Это методы, помеченные как final и вызываемые во время объявления переменной. Вот что говорится в упомянутом Java trail об окончательной инициализации метода:

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

Какой-то код

Я запустил следующий код через компилятор Java 8 и среду выполнения. Чтобы хорошо провести время, попробуйте поэкспериментировать с порядком переменных i и static Var по отношению к их соответствующим блокам инициализации или статической инициализации.

Этот пост первоначально появился на Этот пост первоначально появился на .

Оригинал: “https://dev.to/scottshipp/java-initialization-in-a-nutshell-2lmm”