Guava:マルチマップをジェネリックスーパータイプにキャストすることは有効ですか?

aspaltv

現在、マルチセットを使用して複製を許可するためにマルチマップクラスを実装しています。特に、私はそのboolean putAll(Multimap<? extends K, ? extends V> multimap)方法に取り組んでいます。

私はこれをしたい:

Map<K, Collection<V>> map = ((Multimap<K, V>)multimap).asMap();

asMap()通常はどこにMap<? extends K, Collection<? extends V>>。を返します

これは有効ですか(マップに追加しない限り、エラーはスローされません)?そうでない場合、どうすればこれを修正できますか?

アンディターナー

いいえ、それはキャストは有効ではありませんのと同じ理由で、有効ではないですList<T>List<Object>

Multimap.asMap()ドキュメントよると、ビューを返しますこの意味は

Multimap<K, V> multimap = ...;
Map<SuperOfK, SuperOfV> map = (<some cast>) multimap.asMap();
map.put(superOfK, superOfV);

マルチマップを更新する必要があります。これ自体は結果にはなりませんがClassCastException、キーを繰り返すようなことを行うと、次のようになります。

for (K key : multimap.keys()) { }

したがって、そのようにキャストすることはタイプセーフではないため、禁止されています。

もちろん、マルチマップが不変である場合、この問題は発生しませんが、一般的に、そうすべきではない理由です。そして、「マップに追加しない」と言うことは、コンパイラーにとって十分ではありません-あなたが追加しないことを知りません。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

ファイルマネージャでチェックボックスを有効にする方法は?

分類Dev

アスタリスク13でエージェントチャネルタイプを有効にする方法

分類Dev

アスタリスク13でエージェントチャネルタイプを有効にする方法

分類Dev

Visual Studioパッケージ:テキストラインマーカーにツールチップを表示することは可能ですか?

分類Dev

ジェネリックパラメーターをスーパータイプのサブセットに制限することは可能ですか?

分類Dev

GetItパッケージマネージャーの起動時にDelphiで無効なタイプキャストを導入するTeeChartパッケージ

分類Dev

noImplicitAnyフラグを有効にしてtypescriptをコンパイルするときに、「オブジェクトタイプのインデックスシグネチャには暗黙的に「any」タイプがあります」というエラーを防ぐにはどうすればよいですか?

分類Dev

Visual Studio2013のC ++プロジェクトでGoogleテストをコンパイルしてリンクするには、NuGetパッケージマネージャーによってGtestがインストールされていますか?

分類Dev

タスクマネージャーまたは他の方法でWindowsポップアップボックスイベントをキャプチャするにはどうすればよいですか?

分類Dev

マルチバースパッケージをインストールしてから、フリーでないソースを無効にして、アップグレードさせることはできますか?

分類Dev

シェルスクリプトでエラーをキャッチすることをスキップする

分類Dev

マルチタイプのジェネリック制約を満たすために、タイプ 'object'の変数を明示的にキャストするにはどうすればよいですか?

分類Dev

グループのテキストファイルから名前、役職、部門、マネージャー名、マネージャーの電子メールをフェッチするPowershellスクリプト

分類Dev

コマンドラインからVSインストーラーでNuGetパッケージマネージャーを有効にします。(自動スクリプトの一部として)

分類Dev

ジェネリックをループでキャストする方法は?

分類Dev

一部のAzureDevopsプロジェクトでのみマーケットプレイス拡張機能を無効にすることは可能ですか?

分類Dev

tsharkコマンドラインインターフェイスでTCPおよびUDPトラフィックのみをキャプチャするために使用できるキャプチャフィルタは何ですか?

分類Dev

プロジェクトマネージャーパッケージのAtomエディターアイコンクラスとは何ですか?

分類Dev

Debianパッケージのプレインストールスクリプトでapt-getコマンドを実行することは可能ですか?

分類Dev

どのように私は、ログファイルからJavaのスタックトレースと複数行のメッセージとともに、相関IDをキャプチャするためにはgrepコマンドを使用することができます

分類Dev

アプリでチェックアウト液をカスタマイズすることは可能ですか?

分類Dev

外部ネットにリンクしているときにデータパッケージをキャプチャできないのはなぜですか?

分類Dev

最初のエスプレッソインテントマッチャーから結果を受け取った後、2番目のエスプレッソインテントマッチャーをチェックすることは可能ですか?

分類Dev

PostgreSQLでテーブルの適度に大きな割合をフェッチするときに、ビットマップスキャンがインデックススキャンよりも高速なのはなぜですか?

分類Dev

LINQ to SQLフィルターで条件付きでインターフェイスプロパティにアクセスするために、repository <T>のジェネリックTをインターフェイスにキャストするにはどうすればよいですか?

分類Dev

ジェネリックインターフェイスと演算子のオーバーロード-ジェネリックインターフェイスブロックからのプロシージャをモジュール内でプライベートに設定する方法は?

分類Dev

シングルスレッドプログラムを使用する代わりに、マルチスレッドプログラムと並行してプロジェクトをコンパイルすることでパフォーマンス上の利点はありますか?

分類Dev

ユニバーサルWindowsプラットフォームを対象とするマルチアーキテクチャ.NETライブラリをパッケージ化するにはどうすればよいですか?

分類Dev

パッケージマネージャーは、システムのアーキテクチャと互換性のあるライブラリをどのようにインストールしますか?

Related 関連記事

  1. 1

    ファイルマネージャでチェックボックスを有効にする方法は?

  2. 2

    アスタリスク13でエージェントチャネルタイプを有効にする方法

  3. 3

    アスタリスク13でエージェントチャネルタイプを有効にする方法

  4. 4

    Visual Studioパッケージ:テキストラインマーカーにツールチップを表示することは可能ですか?

  5. 5

    ジェネリックパラメーターをスーパータイプのサブセットに制限することは可能ですか?

  6. 6

    GetItパッケージマネージャーの起動時にDelphiで無効なタイプキャストを導入するTeeChartパッケージ

  7. 7

    noImplicitAnyフラグを有効にしてtypescriptをコンパイルするときに、「オブジェクトタイプのインデックスシグネチャには暗黙的に「any」タイプがあります」というエラーを防ぐにはどうすればよいですか?

  8. 8

    Visual Studio2013のC ++プロジェクトでGoogleテストをコンパイルしてリンクするには、NuGetパッケージマネージャーによってGtestがインストールされていますか?

  9. 9

    タスクマネージャーまたは他の方法でWindowsポップアップボックスイベントをキャプチャするにはどうすればよいですか?

  10. 10

    マルチバースパッケージをインストールしてから、フリーでないソースを無効にして、アップグレードさせることはできますか?

  11. 11

    シェルスクリプトでエラーをキャッチすることをスキップする

  12. 12

    マルチタイプのジェネリック制約を満たすために、タイプ 'object'の変数を明示的にキャストするにはどうすればよいですか?

  13. 13

    グループのテキストファイルから名前、役職、部門、マネージャー名、マネージャーの電子メールをフェッチするPowershellスクリプト

  14. 14

    コマンドラインからVSインストーラーでNuGetパッケージマネージャーを有効にします。(自動スクリプトの一部として)

  15. 15

    ジェネリックをループでキャストする方法は?

  16. 16

    一部のAzureDevopsプロジェクトでのみマーケットプレイス拡張機能を無効にすることは可能ですか?

  17. 17

    tsharkコマンドラインインターフェイスでTCPおよびUDPトラフィックのみをキャプチャするために使用できるキャプチャフィルタは何ですか?

  18. 18

    プロジェクトマネージャーパッケージのAtomエディターアイコンクラスとは何ですか?

  19. 19

    Debianパッケージのプレインストールスクリプトでapt-getコマンドを実行することは可能ですか?

  20. 20

    どのように私は、ログファイルからJavaのスタックトレースと複数行のメッセージとともに、相関IDをキャプチャするためにはgrepコマンドを使用することができます

  21. 21

    アプリでチェックアウト液をカスタマイズすることは可能ですか?

  22. 22

    外部ネットにリンクしているときにデータパッケージをキャプチャできないのはなぜですか?

  23. 23

    最初のエスプレッソインテントマッチャーから結果を受け取った後、2番目のエスプレッソインテントマッチャーをチェックすることは可能ですか?

  24. 24

    PostgreSQLでテーブルの適度に大きな割合をフェッチするときに、ビットマップスキャンがインデックススキャンよりも高速なのはなぜですか?

  25. 25

    LINQ to SQLフィルターで条件付きでインターフェイスプロパティにアクセスするために、repository <T>のジェネリックTをインターフェイスにキャストするにはどうすればよいですか?

  26. 26

    ジェネリックインターフェイスと演算子のオーバーロード-ジェネリックインターフェイスブロックからのプロシージャをモジュール内でプライベートに設定する方法は?

  27. 27

    シングルスレッドプログラムを使用する代わりに、マルチスレッドプログラムと並行してプロジェクトをコンパイルすることでパフォーマンス上の利点はありますか?

  28. 28

    ユニバーサルWindowsプラットフォームを対象とするマルチアーキテクチャ.NETライブラリをパッケージ化するにはどうすればよいですか?

  29. 29

    パッケージマネージャーは、システムのアーキテクチャと互換性のあるライブラリをどのようにインストールしますか?

ホットタグ

アーカイブ