Sobes.tech
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";
}