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