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