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