Ваш код Java не скомпилирован, поэтому я смоделировал пример.
class Record {
String name;
String address;
Record(String name, String address) {
this.name = name;
this.address = address;
}
String getName() {
return name;
}
}
class Person {
private Record record;
public String name() {
return record().getName();
}
private Record record() {
if (record == null) {
refetch();
}
return record;
}
private void refetch() {
record = new Record("Joe Smith", "101 Broadway, NYC, NY");
}
}
Kotlin вынуждает вас ОБЪЯВЛЯТЬ, если значение обнуляется с помощью '?'символ, когда вы определяете это.Так что это должно выглядеть так:
internal class Record(var name: String, var address: String)
internal class Person {
private var record: Record? = null
fun name(): String {
return record()!!.name
}
private fun record(): Record? {
if (record == null) {
refetch()
}
return record
}
private fun refetch() {
record = Record("Joe Smith", "101 Broadway, NYC, NY")
}
}