2011-07-14 51 views
21

也許是一個新手問題,但我不明白爲什麼當我嘗試做類似Map<String, boolean>的事情時,我的IDE尖叫着說:「令牌上的語法錯誤」布爾值「 「,但用布爾運算完美。任何人都可以解釋我爲什麼那樣?提前致謝!!Java Map不接受「布爾」

+3

答案是在這個更一般的問題:[爲什麼不泛型支持原始類型?](http://stackoverflow.com/questions/2721546/why-dont-generics-support-primitive-types) –

+1

大多數'地圖'可以替換爲'套件' –

回答

42

簡而言之:Java泛型不適用於原始類型參數,僅適用於類。因此,以相同的方式,您不能使用List<int>,只能使用List<Integer>

有關更多信息,請參閱相關Java Generics FAQ entry

26

使用布爾值代替布爾值。地圖只能包含對象,布爾是一個原始類型而不是對象。布爾是布爾的對象包裝。

12

除了其它響應,請注意,您可以使用Map<String, Boolean>並使用它們幾乎就好像它是Map<String, boolean>。也就是說,你將能夠putgetboolean s(原始)。查看自動裝箱解釋爲什麼這會起作用。使用自動裝箱存在一些缺陷,但在簡單的情況下,它應該起作用。