new Boolean (true) и Boolean.valueOf (true) возвращают в штучной упаковке примитивы ... реальные объекты, которые можно использовать в коллекциях и т. Д. Из примитивных логических значений.
Boolean.parseBoolean ("true") возвращает примитивное логическое значение.
Кстати,
Boolean b = Boolean.parseBoolean(true);
Boolean b = Boolean.parseBoolean("true");
действительно ошибки. вы создаете примитивное логическое значение, а затем автоматически переносите его в логическое значение.
Вместо этого следует использовать valueOf (true) или valueOf ("true").
Таким образом, реальное использование этих методов было бы
Boolean b = new Boolean(true); //really this should never be used **
Boolean b = new Boolean("true"); //really this should never be used **
boolean b = Boolean.parseBoolean(true);
boolean b = Boolean.parseBoolean("true");
Boolean b = Boolean.valueOf(true);
Boolean b = Boolean.valueOf("true");
** не используйте это, поскольку вы просто создаете объекты без необходимости. использование valueOf позволяет повторно использовать существующие логические объекты. Так как логические значения неизменны, это нормально.