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 καλεί το getDefault() μόνο αν το opt είναι κενό
String result2 = opt.orElseGet(() -> getDefault());

public String getDefault() {
    System.out.println("Υπολογισμός προεπιλεγμένης τιμής");
    return "default";
}