РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
78 of 1163 menu

Инициализатор экземпляра

Инициализатор экземпляра - это специальный блок кода внутри класса, который заключается в фигурные скобки { } и не имеет имени. Он выполняется автоматически при создании каждого нового объекта класса, непосредственно перед выполнением кода конструктора. Инициализатор экземпляра используется для общей инициализации полей, когда нужно выполнить одинаковые действия для всех конструкторов класса.

Если в классе объявлено несколько инициализаторов экземпляра, они выполняются в порядке их следования в исходном коде. Инициализаторы экземпляра не могут содержать return с возвращаемым значением, но могут содержать return без значения, что приведёт к преждевременному завершению блока.

Синтаксис

public class MyClass { { // instance initializer code } }

Пример

Давайте создадим класс с инициализатором экземпляра, который заполняет список значениями при создании объекта:

import java.util.List; import java.util.ArrayList; public class Main { public static void main(String[] args) { MyClass obj = new MyClass(); System.out.println(obj.getList()); } } class MyClass { private List<String> list = new ArrayList<>(); { list.add("a"); list.add("b"); list.add("c"); list.add("d"); list.add("e"); } public List<String> getList() { return list; } }

Результат выполнения кода:

[a, b, c, d, e]

Пример

Давайте рассмотрим порядок выполнения инициализатора экземпляра и конструктора. Инициализатор выполняется перед конструктором:

public class Main { public static void main(String[] args) { MyClass obj = new MyClass(); System.out.println(obj.getValue()); } } class MyClass { private int value; { System.out.println("Initializer block"); value = 10; } public MyClass() { System.out.println("Constructor"); value = value + 5; } public int getValue() { return value; } }

Результат выполнения кода:

Initializer block Constructor 15

Пример

Давайте создадим класс с несколькими инициализаторами экземпляра. Они выполняются в порядке объявления:

import java.util.List; import java.util.ArrayList; public class Main { public static void main(String[] args) { MyClass obj = new MyClass(); System.out.println(obj.getList()); } } class MyClass { private List<Integer> list = new ArrayList<>(); { list.add(1); list.add(2); } { list.add(3); list.add(4); list.add(5); } public List<Integer> getList() { return list; } }

Результат выполнения кода:

[1, 2, 3, 4, 5]

Смотрите также

  • конструктор constructor,
    который вызывается при создании объекта
  • статический инициализатор static init,
    который выполняется при загрузке класса
  • ключевое слово static,
    которое относится к классу, а не к экземпляру
  • ключевое слово this,
    которое ссылается на текущий объект
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить