从Map获取可选项的通用方法

时间:2015-07-14 02:05:40

标签: java generics

在Java 8中,我正在尝试定义一个通用方法来查找Map<K, V>是否包含K key

private static Optional<V> find(final Map<K, V> map, final K key) {
    final V result = map.get(key);
    return (result == null) ? Optional.empty() : Optional.of(key);
}

但我在KV上收到了一堆编译时错误:

[ERROR] ... Compilation failure:
[ERROR] ~/App.java:[31,47] cannot find symbol
[ERROR] symbol:   class K
[ERROR] location: class com.myapp.app.App
[ERROR] ~/App.java:[31,50] cannot find symbol
[ERROR] symbol:   class V
[ERROR] location: class com.myapp.app.App

如何解决这些错误?

1 个答案:

答案 0 :(得分:1)

private static <K, V> Optional<V> find(final Map<K, V> map, final K key) {
    final V result = map.get(key);
    return Optional.ofNullable(result);
}

信用 - Sotirios Delimanolis提及Option#ofNullable而我未能列出通用参数。