История изменений
Исправление vtVitus, (текущая версия) :
Optional это функциональщина для потоков, по большей части она больше ни для чего не нужна и только забивает код барахлом.
Почему ты замарачиваешься обработкой null, но не замарачиваешься c обработкой age < 0? Если нужна обработка null, так явно её введи.
@Getter
@Builder(toBuilder = true)
class Person {
private final String name;
private final @Nullable Integer age;
public boolean isPatric() {
return age == null;
}
public Optional<Integer> safePatric() {
return Optional.ofNullable(age);
}
}
void clone(Person person) {
Person васян = person.toBuilder().name("Васян").build();
Person дед = person.toBuilder().age(100500).build();
Person патрик = person.toBuilder().age(null).build();
}
«Почему ты замарачиваешься обработкой null, но не замарачиваешься c обработкой age < 0? » - Это ключевой вопрос. Вокруг этого null бегают и скачут, как будто это что-то такое особое, хотя и идея его подсветит null-говнокод, да и других стредств обработки вагон, а вот другие логические ошибки (иногда гораздо более важные) забывают и оставляют за бортом и получают тот же самый говнокод, но nullsafe. Думать надо про общую логику, а не про частный nullsafe.
Исправление vtVitus, :
Optional это функциональщина для потоков, по большей части она больше ни для чего не нужна и только забивает код барахлом.
Почему ты замарачиваешься обработкой null, но не замарачиваешься c обработкой age < 0? Если нужна обработка null, так явно её введи.
@Getter
@Builder(toBuilder = true)
class Person {
private final String name;
private final @Nullable Integer age;
public boolean isPatric() {
return age == null;
}
public Optional<Integer> safePatric() {
return Optional.ofNullable(age);
}
}
void clone(Person person) {
Person васян = person.toBuilder().name("Васян").build();
Person дед = person.toBuilder().age(100500).build();
Person патрик = person.toBuilder().age(null).build();
}
Исходная версия vtVitus, :
Optional это функциональщина для потоков, по большей части она больше ни для чего не нужна и только забивает код барахлом.
Почему ты замарачиваешься обработкой null, но не замарачиваешься c обработкой age < 0? Если нужна обработка null, так явно её введи.
@Getter
@Builder(toBuilder = true)
class Person {
private final String name;
private final @Nullable Integer age;
public boolean isPatric() {
return age == null;
}
}
void clone(Person person) {
Person васян = person.toBuilder().name("Васян").build();
Person дед = person.toBuilder().age(100500).build();
Person патрик = person.toBuilder().age(null).build();
}