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 | перед телом конструктора |
| Может быть несколько? | Да, выполняются в порядке объявления | Да |
| Можно использовать параметры конструктора | Да | Да |