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 καλεί το getDefault() μόνο αν το opt είναι κενό
String result2 = opt.orElseGet(() -> getDefault());
public String getDefault() {
System.out.println("Υπολογισμός προεπιλεγμένης τιμής");
return "default";
}