필자는 최근 java.util.Map의 putIfAbsent (...) 버전을 원한다는 것을 알았습니다.이 메소드는 어떤 종류의 팩토리 메소드를 제공 할 수 있고, 이미 존재하지 않는 경우 Object를 인스턴스화 할 수 있습니다. 이렇게하면 많은 코드가 단순 해집니다. 여기Java에 Map의 putIfAbsent (key, supplier) 메소드가없는 이유는 무엇입니까?
내 수정 인터페이스는 다음과 같습니다
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;
}
}
이제 내 질문 : 이 일의 또 다른 (쉬운) 방법이 있나요 아니면 그냥 자바 API에서 뭔가를 간과?
FWIW, ['Map # putIfAbsent'] (http://docs.oracle.com/javase/8/docs/api/java/util/Map.html#putIfAbsent-K-V-)가 Java8과 함께 추가되었습니다. – fxm
Java 1.8에서 V putIfAbsent (K 키, V 값) –
알지만, Supplier 메소드 대신 Object를 제공 할 수 있습니다. –