Возможно, это вопрос новичков, но я не понимаю, почему, когда я пытаюсь сделать что-то вроде Map<String, boolean>
, мои кривые IDE говорят "Синтаксическая ошибка на токене" boolean "," Размеры, ожидаемые после этого токена ", но с Boolean it работает отлично. Может ли кто-нибудь объяснить мне, почему это так? Спасибо заранее!
Карта Java не принимала "логические"
Ответ 1
Проще говоря: Java generics не работают с примитивными аргументами типа, а только с классами. Точно так же вы не можете использовать List<int>
, только List<Integer>
.
Дополнительную информацию см. в соответствующем разделе Часто задаваемые вопросы по Java Generics.
Ответ 2
Используйте Boolean вместо boolean. Карта может содержать только объекты, а boolean - это примитивный тип, а не объект. Boolean - это объектная оболочка boolean.
Ответ 3
В дополнение к другим ответам обратите внимание, что вы можете использовать Map<String, Boolean>
и использовать их почти так, как если бы это было Map<String, Boolean>
. То есть вы сможете put
и get
boolean
(примитив). Посмотрите autoboxing для объяснения, почему это работает. Есть некоторые подводные камни использования автобоксинга, но в простых случаях он должен работать.