Warum nicht Java haben einen putIfAbsent(key, Lieferanten) - Methode in der Karte?

Ich habe gerade vor kurzem fand mich wollen, eine version von putIfAbsent(...) in java.util.Anzeigen, die Sie liefern können, eine Art factory-Methode zu instanziieren eines Objekts, wenn es nicht bereits vorhanden ist. Diese vereinfachen würde eine Menge code.

Hier ist mein modifiziertes interface:

import java.util.Map;
import java.util.function.Supplier;

/**
 * Extension of the Map Interface for a different approach on having putIfAbsent
 * 
 * @author Martin Braun
 */
public interface SupplierMap<K, V> extends Map<K, V> {

    public default V putIfAbsent(K key, Supplier<V> supplier) {
        V value = this.get(key);
        if(value == null) {
            this.put(key, value = supplier.get());
        }
        return value;
    }

}

Nun meine Frage:
Gibt es eine andere (einfachere) Möglichkeit dies zu tun, oder habe ich nur etwas übersehen in der Java-API?

  • FWIW, Map#putIfAbsent wurde Hinzugefügt, mit Java8.
  • in Java 1.8 gibt es V putIfAbsent(K key, V value)
  • Ich weiß, aber es erst ermöglicht, ein Objekt, das anstelle eines Lieferanten-Methode.
  • was ist Los mit obigen code. Ich denke, es sollte funktionieren.
InformationsquelleAutor Martin Braun | 2014-11-25
Schreibe einen Kommentar