地図私は2つの入力のマップ間の値の一方的な交差点を返す関数を持っている:マップ全体の一般的なキーイング:地図<T,K>から地図<K,V>と<T,V>
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;
}
これはない推移マッピング組成物であり、すなわち
T->K, K->V ===> T->V
代わりに変換
T->(K,V) ===> K->V
この関数は、署名が次のように一般的になる方法はありますか?
Map<K, V> mergeMaps(Map aKeys<T, K>, Map <T, V> aValues)
まだコンパイルされていませんが、IntelliJは文句を言いません:) – pbh101
まあ、Javaジェネリックに関する苦情はほとんど読んだことがあります。この文法の不規則性は私にも理由を与えます。私がしようとしていた: MPaに mergeMaps (地図<...>、地図<...>) おかげで多くを! –
pbh101
ええ、あなたはクラスの最初か定義しているジェネリックパラメータを定義しなければなりません。私は、Javaのジェネリックスの実装も完璧ではないことに同意しますが、時にはきれいです。 – Daff