2011-07-14 21 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(原始)。查看自动装箱解释为什么这会起作用。使用自动装箱存在一些缺陷,但在简单的情况下,它应该起作用。