Учитывая эту запись:
Код: Выделить всё
public record Point(double x, double y) {
public Point {
if (x > y) {
System.out.println(this.x());
}
}
public void printXAndY() {
System.out.printf("X: %.2f; Y: %.2f%n", this.x, this.y);
}
}
Код: Выделить всё
new Point(5.0, 3.0);
Код: Выделить всё
0.0
Код: Выделить всё
System.out.println(this.x);
Насколько я понимаю, следующее:
- В компактном конструкторе поля назначаются после тела конструктора.
- Поэтому чтение this.x незаконно, поскольку он еще не инициализирован.
- Но вызов this.x() успешно компилируется.
/> - Во время выполнения он возвращает 0,0, что, по-видимому, является значением поля по умолчанию.
Подробнее здесь: https://stackoverflow.com/questions/798 ... -default-f
Мобильная версия