Wrapper Classes

Olá, estou tentando rodar um programa com o método Integer.getInteger (pra que serve afinal?):



Code:


public class TInteger {

public static void main (String [] args) {

Integer i = Integer.getInteger(System.getProperty(´´java.home´´));

int x = i.intValue();

System.out.println(i);

System.out.println(x);

}

}








mas ele dá erro na linha 4 (NullPointerException), o que está errado?

A linha abaixo:



System.out.println(System.getProperty("java.home"));



imprime na tela e não dá erro, então porque o método getInteger não retorna um objeto Integer? pra serve afinal este método? ele é um dos tais getXxx especificados nos objetivos do exame?

Pra que ele serve eu não sei, e acho pouco provável que ele cai no exame.

Sobre por que deu errado, pra começar, você usou errado. Eu sei que pela documentação da API parece que você tem que usar o System.getProperty(), mas na verdade isso ele faz sozinho. Basta passar o nome da propriedade. Porém, isso não resolve. Se esse método tivesse um mínimo de tratamento de exceção, você veria uma stack trace parecida com a seguinte:



java.lang.NumberFormatException: For input string: "/usr/local/java/jre"

at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)

at java.lang.Integer.parseInt(Integer.java:426)

at java.lang.Integer.valueOf(Integer.java:505)

at java.lang.Integer.decode(Integer.java:866)

at TInteger.getInteger(TInteger.java:30)

at TInteger.main(TInteger.java:7)





Ou seja, ele está fazendo um parseInt dentro do método, e como essa propriedade não é numérica, acontece uma exception, e nesse caso ele simplesmente retorna o Integer passado para o método (passando apenas uma String ele usa overload pra chamar o método correto passando null).