Недавно я пытался преобразовать строковый литерал в boolean
, когда метод boolean Boolean.getBoolean(String name)
выскочил из автозаполнения окно. Был также другой метод (boolean Boolean.parseBoolean(String s)
), появившийся сразу после этого, что привело меня к поиску, чтобы выяснить, каковы различия между этими двумя, поскольку они оба, похоже, делали то же самое.
Оказывается, что то, что Boolean.getBoolean(String name)
действительно делает, это проверить, существует ли свойство > (!) данного имени и если его значение true
. Я думаю, что это очень вводит в заблуждение, поскольку я определенно не ожидаю, что метод boolean
действительно вызывает вызов System.getProperty
, и просто взглянув на подпись метода, он уверен, что выглядит (по крайней мере для меня), как будто он должен использоваться для анализа String
как boolean
. Конечно, javadoc четко заявляет, но я все же считаю, что метод имеет вводящее в заблуждение имя, и это не в нужном месте. Другие примитивные обертки типа, такие как Integer
, также имеют аналогичный метод.
Кроме того, это не очень полезный метод, который должен принадлежать базовому API, так как я думаю, что это не очень похоже на нечто вроде -Darg=true
. Может быть, это хороший вопрос для интервью на Java: "Что такое вывод Boolean.getBoolean("true")
?". Я считаю, что более подходящее место для этих методов будет в классе System
, например, getPropertyAsBoolean
; но опять же, я по-прежнему считаю ненужным использовать эти методы в базовом API. Было бы разумно иметь их в чем-то вроде класса Properties
, где очень часто делается этот тип преобразований.
Что вы думаете обо всем этом? Кроме того, если есть другой "неудобный" метод, о котором вы знаете, отправьте его.
N.B. Я знаю, что я могу использовать Boolean.valueOf
или Boolean.parseBoolean
для преобразования строкового литерала в boolean
, но я просто хочу обсудить дизайн API.