Если вы преобразуете kotlin код в java с помощью декомпилятора байт-кода, вы получите его.
class InitOrderDemo(val name: String = "Yuchen") {
val name2: String = "Zhong"
}
Декомпилированный код Java:
public final class InitOrderDemo {
@NotNull
private final String name2;
@NotNull
private final String name;
@NotNull
public final String getName2() {
return this.name2;
}
@NotNull
public final String getName() {
return this.name;
}
public InitOrderDemo(@NotNull String name) {
Intrinsics.checkParameterIsNotNull(name, "name");
super();
this.name = name;
this.name2 = "Zhong";
}
....
}
Обратите внимание, что аргумент name
, который вы можете передать через вызов конструктора, но name2
изменить нельзя - он похожздесь константа.
Таким образом, если вы хотите, чтобы свойство было неизменным (но не постоянным для всех экземпляров этого класса), вам необходимо определить его в ()
- в конструкторе.