Sobes.tech
Junior — Middle

Java-ში orElse და orElseGet მეთოდების შორის რა განსხვავებაა, და რა არის მათი გამოყენების თავისებურებები?

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";
}