現在、Multisapを使用して重複を許可するMultimapクラスを実装しています。特に、私はboolean putAll(Multimap<? extends K, ? extends V> multimap)
メソッドに取り組んでいます。Guava:マルチマップを汎用スーパータイプにキャストすることは有効ですか?
私はこれやりたい:asMap()
は通常Map<? extends K, Collection<? extends V>>
を返す
Map<K, Collection<V>> map = ((Multimap<K, V>)multimap).asMap();
を。
これは有効です(マップに追加しない限り、エラーは発生しません)。そうでない場合は、どうすれば修正できますか?
なぜそれをしたいですか? 'putAll'の引数は読み込み専用で使われるので、'?あなたが欲しいものです。 –
@PaulBoddington私はそれから 'asMap()'オブジェクトを取得したいと思います。しかし、私はこのメソッドを呼び出して 'Map>'を取得しようとすると、このメソッドはClassCastExceptionをスローすることに懸念しています。私はそれについてあまりよく知らないし、私の脳は少し燃えた。 –
aspaltv
型が消去されているため、 'ClassCastException'を受け取ることはありません。あなたは 'Map <? extends K、Collection extends V>> map = multimap.asMap(); '。 –