1

私はただ疑問に思っています...最適な方法でキャストConcurrentHashMapする方法は?HashMap

有用なコメントは大歓迎です

4

2 に答える 2

8

なぜあなたはそれをする必要があるのですか?にキャストするだけMapです。

于 2012-09-18T17:29:00.830 に答える
4

AConcurrentHashMapHashMap(厳密なクラス継承の意味で)ではないため、このキャストを実行することはできません。キースが言うように、あなたはおそらくそれをのように扱い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、使用する実装を心配することなく変更できることです。

于 2012-09-18T17:44:21.753 に答える