Para tudo… vamos por partes.
-
http://java.sun.com/j2se/1.4.2/docs/api/
Esse site eh seu amigo, e voce deve ter ele no Bookmark mais proximo
-
Veja a classe Integer:
http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Integer.html
Repare nos metodos que ela dispoe.
-
ArrayList ( e qualquer outro derivado de List e afins ) atualmente soh aceita objetos como argumento para os metodos add/get
-
Qual o tipo de objeto que voce inseriu? o seu cast deve ser para o mesmo tipo, na hora de recuperar o valor
-
Fazer cast para um tipo incorreto dara erro na hora de rodar o teu programa ( ClassCastException )
Tendo essas informacoes basicas em mente, revise o seu codigo:
:arrow: Voce tem um objeto do tipo ArrayList, chamado numero, no qual, na posicao 0, voce adicionou um objeto do tipo Integer. Ou, em outras palavras, algo como
ArrayList numeros = new ArrayList();
numeros.add(new Integer(2));
Logo, se voce der um get(0), recebera um objeto do tipo Integer. Para comprovar isso, faca
System.out.println(numeros.get(0));
e veja o que imprime na tela.
:arrow: Como sabemos, voce tem um Integer. Entao, se fizer
(ArrayList)numeros.get(0);
voce tera um erro na execucao do seu codigo, ja que a posicao 0 contem um Integer, e nao um ArrayList.
:arrow: Voltando a classe Integer, de uma boa olhada nos metodos nela disponiveis. Algum lhe chama a atencao? que tal o metodo intValue()?? Vejamos o que a documentacao do metodo nos diz:
“Returns the value of this Integer as an int.”
Parece bem razoavel, nao?!..
:arrow: Faca um teste:
System.out.println(new Integer(10).intValue());
o que imprime? 10? 100? 45?
:arrow: Usamos o metodo intValue() para pegar o primitivo int contigo no objeto Integer.
:arrow: Juntando as pecinhas ate agora: Temos um objeto do tipo ArrayList, onde o primeiro item eh um objeto do tipo Integer, com o valor 2. Tambem sabemos que, para pegarmos o int desse objeto, devemos usar o metodo intValue().
:arrow: Consegue bolar o codigo para fazer isso funcionar? que tal
int x = ((Integer)numeros.get(0)).intValue()
funciona? que tal entao
Integer meuInteger = (Integer)numeros.get(0);
int x = meuInteger.intValue();
e esse, funciona?
A mesma “regra” aqui descrita vale para as outras situacoes.
Rafael