Подтвердить что ты не робот

Карта Java не принимала "логические"

Возможно, это вопрос новичков, но я не понимаю, почему, когда я пытаюсь сделать что-то вроде Map<String, boolean>, мои кривые IDE говорят "Синтаксическая ошибка на токене" boolean "," Размеры, ожидаемые после этого токена ", но с Boolean it работает отлично. Может ли кто-нибудь объяснить мне, почему это так? Спасибо заранее!

4b9b3361

Ответ 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 для объяснения, почему это работает. Есть некоторые подводные камни использования автобоксинга, но в простых случаях он должен работать.