2012-01-12 18 views
1
Map<String, String> fieldAttributes = new HashMap<String, String>(); 

fieldAttributes.put("a", "48"); 
fieldAttributes.put("b", ""); 
fieldAttributes.put("c", "4224"); 

今、私はこれを行うことができますどのようにMap<Object, Object>型キャスト地図<文字列、文字列>

Map<String, String>をキャストする必要があります<オブジェクトは、オブジェクト>は。私は? extends Objectを試しましたが、使用方法は不明です。あなたは

Map<Object, Object> properties = (Map) fieldAttributes; 

を使用することができます

+0

あなたは直接Map を使用できますか? –

+0

なぜマップですか?結局のところ** String **は** Object ** – adatapost

+1

@AVDです。なぜなら、オブジェクトをMap として扱う関数にフィードする必要があるからです。 – Anand

答えて

6

コンパイラはあなたに適切な警告を与え、それがコンパイルされます。

1
Map<? extends Object, ? extends Object> genMap = fieldAttributes; 

OR

Map<Object, Object> gMap = (Map)fieldAttributes; 
+2

または単に 'Map 'です。 「extends Object」は暗黙のものです。 –

+0

はい、マップはすべてのクラスextends Objectとして使用できます。 – Reddy

0

代わりの鋳造、あなただけStringの代わりにObjectを使用することができます。

Map<Object, Object> fieldAttributes = new HashMap<Object, Object>(); 
fieldAttributes.put("a", "48"); 
fieldAttributes.put("b", ""); 
fieldAttributes.put("c", "4224"); 

Mapを反復すると、あなたが変換するObject年代.toString()メソッドを使用することができます。

4

できません。 Map<String, String>Map<Object, Object>ではありません。もしそうなら、あなたはできるでしょう。

Map<String, String> map = new HashMap<String, String>(); 
Map<Object, Object> map2 = (Map<Object, Object>) map; 
map2.put(Integer.valueOf(2), new Object()); 

これは、ジェネリックがもたらすタイプの安全性を破るでしょう。

実際には、生のマップを使用するか、Map<? extends Object, ? extends Object>を使用する必要があります。

関連する問題