Junior — Middle
Каква е разликата между методите orElse и orElseGet в Java и какви са техните характеристики на използване?
sobes.tech AI
Отговор от AI
В Java методите orElse и orElseGet се използват с класа Optional за задаване на стойност по подразбиране, ако обектът липсва.
orElse(T other)— приема стойност по подразбиране, която се изчислява веднага при извикване на метода, независимо дали има стойност вOptional.orElseGet(Supplier<? extends T> other)— приема доставчик (функция), който се извиква само ако стойността липсва, т.е. изчислението на стойността се отлага до необходимост.
Характеристики на използване:
- Ако изчислението на стойността по подразбиране е скъпо или има странични ефекти, е по-добре да използвате
orElseGet, за да избегнете ненужни разходи. - Ако стойността е проста и бърза, може да се използва
orElse.
Пример:
Optional<String> opt = Optional.empty();
// orElse винаги изчислява "default"
String result1 = opt.orElse(getDefault());
// orElseGet извиква getDefault() само ако opt е празен
String result2 = opt.orElseGet(() -> getDefault());
public String getDefault() {
System.out.println("Изчисляване на стойността по подразбиране");
return "default";
}