Por que Double.parseDouble (null) e Integer.parseInt (null) lançam exceções diferentes?

Por que Double.parseDouble (null) e Integer.parseInt (null) lançam exceções diferentes?

Isso é um acidente histórico ou intencional? A documentação declara claramente dois tipos de exceções para Double.parseDouble(...) e um para Integer.parseInt() , mas parece inconsistente:

 Integer.parseInt(null); // throws java.lang.NumberFormatException: null 

Contudo

 Double.parseDouble(null); // throws java.lang.NullPointerException 

É razoável esperar que as mesmas exceções sejam lançadas para null; no entanto, essas APIs são muito antigas e podem não ser alteradas neste momento.

E:

Como o comportamento de exceção é de longa duração e especificado no JavaDoc, é impraticável alterar o comportamento de ambos os methods no momento. Fechando como não irá corrigir.

Como tirado de: Bug Report: Integer.parseInt () e Double.parseDouble () lançam exceções diferentes em null.

Como outros afirmaram: Provavelmente é feito por diferentes autores.

Nota: tudo neste post está na origem do Java7-b147

Double.parseDouble() entra em uma biblioteca Sun (em sun.misc.FloatingDecimal ) a primeira coisa importante que acontece é:

 in = in.trim(); // don't fool around with white space. // throws NullPointerException if null 

Integer.parseInt() é feito manualmente na class Integer . A primeira coisa importante que acontece é:

 if (s == null) { throw new NumberFormatException("null"); } 

Eu acho que existem dois autores diferentes.