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 танҳо агар opt холӣ бошад, getDefault()-ро даъват мекунад
String result2 = opt.orElseGet(() -> getDefault());
public String getDefault() {
System.out.println("Ҳисоб кардани арзиши пешфарз");
return "default";
}