English 中文(简体)
地图上的通用钥匙:地图<K,V>,地图<T,K>和地图<T,V>。
原标题:Generic keying across maps: Map<K,V> from Map<T,K> and Map<T,V>
  • 时间:2009-09-01 22:45:19
  •  标签:

我有一项功能,即两个投入地图之间的价值观交汇点:

Map<Key, Value> mergeMaps(Map aKeys<CompositeKey, Key>, 
         Map <CompositeKey, Value> aValues) {

    Map<Key, Value> myResult = Maps.newHashMap();
    for (CompositeKey myKey : aKeys.keySet()) {
        if (aValues.containsKey(myKey)) {
            myResult.put( aKeys.get(myKey), aValues.get(myKey));
        }
    }
    return myResult;
}

页: 1

T->K, K->V ===> T->V

而是转变

T->(K,V) ===> K->V

Java是否有办法使这一职能具有通用性,使其签名如下?

Map<K, V> mergeMaps(Map aKeys<T, K>, Map <T, V> aValues)
最佳回答

我认为,这一签名应当做到你想要的:

<T, K, V> Map<K, V> mergeMaps(Map<T, K> aKeys, Map<T, V> aValues)
问题回答

一种完全通用的形式

public <T, K, V> Map<K, V> mergeMaps(Map<T, K> aKeys, Map<T, V> aValues)

如果将K和V列入表格,你就能够这样做。

For a case where you want to specify a relation between T and K, V you might want something like

public <K, V, T extends CompositeKey<K, V>> ...

可能的话,有<条码>? 扩展/编码 此处的超级,但视使用情况而定。





相关问题
热门标签