2011-07-14 13 views
21

多分初心者質問ですが、私が何かのようなことをしようとすると理解しませんMap<String, boolean> IDEは "トークンの構文エラー"ブール値 " "しかし、ブーリアンでは完璧に動作します。誰も私に説明することができますそれはなぜそうですか?前もって感謝します!!Javaマップは "ブール値"を受け付けません

+3

答えはより一般的な質問です:[Genericsはプリミティブ型をサポートしていないのはなぜですか?](http://stackoverflow.com/questions/2721546/why-dont-generics-support-primitive-types) –

+1

'Map 'は 'Set 'に置き換えることができます。 –

答えて

42

単純に言えば、Javaジェネリックスはプリミティブ型の引数では動作せず、クラスのみで動作します。同じようにList<int>は使用できません。List<Integer>のみ使用できます。

詳細については、Java Generics FAQ entryを参照してください。

26

ブール値の代わりにブール値を使用します。マップはオブジェクトのみを含み、ブール値はオブジェクトではないプリミティブ型です。 Booleanはbooleanのオブジェクトラッパーです。

12

他の応答に加えて、Map<String, Boolean>を使用し、をほぼのようにMap<String, boolean>のように使用できることに注意してください。つまり、putgetboolean(プリミティブ)になります。これがなぜ機能するのか説明するために、オートバイを見てください。オートボクシングを使用することにはいくつかの落とし穴がありますが、単純なケースではうまくいくはずです。

関連する問題