Qual é o método mais enganador na API do Java Base? [fechadas]
Eu estava recentemente tentando converter uma string literal em umboolean
, quando o métodoboolean Boolean.getBoolean(String name)
saiu da janela de preenchimento automático. Houve também outro método (boolean Boolean.parseBoolean(String s)
) aparecendo logo após, o que me levou a pesquisar para descobrir quais eram as diferenças entre esses dois, pois ambos pareciam fazer o mesmo.
Acontece que o queBoolean.getBoolean(String name)
realmente faz éverifique se existeSystem
propriedade (!) do nome dado e se seu valor étrue
. Eu acho que isso é muito enganador, como eu definitivamente não estou esperando que um método deBoolean
está realmente fazendo uma chamada paraSystem.getProperty
, e apenas olhando para a assinatura do método, com certeza parece (pelo menos para mim) como ele deve ser usado para analisar umString
como umboolean
. Claro, o javadoc afirma isso claramente, mas ainda acho que o método tem um nome enganoso e não está no lugar certo. Outros wrappers de tipos primitivos, comoInteger
também tem um método semelhante.
Além disso, não parece ser um método muito útil para pertencer à API base, pois acho que não é muito comum ter algo como-Darg=true
. Talvez seja uma boa pergunta para uma entrevista de posição em Java: "Qual é a saída deBoolean.getBoolean("true")
"Eu acredito que um lugar mais apropriado para esses métodos seria noSystem
classe, por exemplo,getPropertyAsBoolean
; mas, novamente, ainda acho desnecessário ter esses métodos na API de base. Faz sentido tê-los em algo como oProperties
classe, onde é muito comum fazer esse tipo de conversão.
O que você acha de tudo isso? Além disso, se houver outro método "embaraçoso" que você conheça, poste-o.
N.B. Eu sei que posso usarBoolean.valueOf
ouBoolean.parseBoolean
para converter uma string literal em umboolean
, mas estou apenas procurando discutir o design da API.