私はただ疑問に思っています...最適な方法でキャストConcurrentHashMap
する方法は?HashMap
有用なコメントは大歓迎です
なぜあなたはそれをする必要があるのですか?にキャストするだけMap
です。
AConcurrentHashMap
はHashMap
(厳密なクラス継承の意味で)ではないため、このキャストを実行することはできません。キースが言うように、あなたはおそらくそれをのように扱いMap
、クライアントコードに実装を気にしないほうがよいでしょう。ConcurrentHashMap
本当にをに変換したい場合はHashMap
、コンストラクターHashMap(Map)を使用しますが、これにはまったく新しいMapを作成して入力する必要があります。
私の「それを「のように扱うMap
」提案を明確にします。コードを書く通常の方法(本当に必要な場合、HashMap
またはConcurrentHashMap
次のような機能が必要な場合を除く)。
Map<K, V> myMap = new HashMap<K, V>();
また
Map<K, V> myMap = new ConcurrentHashMap<K, V>():
だがしかし
//Don't do this unless you have a good reason!
HashMap<K, V> myMap = new HashMap<K, V>();
物事を一般的に保ち、変数myMap
をaMap
ではなくとして定義することの利点はHashMap
、使用する実装を心配することなく変更できることです。