init{} в Kotlin это аналог чего в Java?

init {} в Kotlin — это блок инициализации, и его аналог в Java — это инициализатор экземпляра (instance initializer block).

Пример Kotlin:

class Person(val name: String) {
    init {
        println("Init block: $name")
    }
}

Аналог в Java:

public class Person {
    private final String name;

    {
        System.out.println("Init block: " + name);
    }

    public Person(String name) {
        this.name = name;
    }
}

Обрати внимание:

  • init {} выполняется при создании экземпляра, до тела конструктора
  • в Java это называется «instance initializer block» и выполняется до тела конструктора

Как работает?

ЭтапKotlin (init {})Java
Когда выполняетсяпри вызове primary constructorперед телом конструктора
Может быть несколько?Да, выполняются в порядке объявленияДа
Можно использовать параметры конструктораДаДа

Опубликовано

в

,

от

Метки: