Modificando somente um atributo do Vector

hhmmm… meio obvio, nao?!.. se voce tem um Integer, tem que fazer cast para tal, ao inves de String… O meu codigo de exemplo, levando em consideracao o seu codigo, nao ira funcionar memso… sei la pq fiz cast para String… Voce tem que fazer cast para o tipo contido na posicao em questao, ou seja, Integer, no teu caso.

Rafael

deu não fera…
deu erro de compilação agora:

isso?

teste =  Integer.parseInt((Integer)lista.get(0));

nem esse aki funciona q eu pensei q ia dar:

teste =  Integer.parseInt((ArrayList)lista.get(0));

seguinte erro:
cannot resolve symbol

alguma solução? help. obrigado por está me ajudando!!!

Para tudo… vamos por partes.

  1. http://java.sun.com/j2se/1.4.2/docs/api/
    Esse site eh seu amigo, e voce deve ter ele no Bookmark mais proximo

  2. Veja a classe Integer:
    http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Integer.html

Repare nos metodos que ela dispoe.

  1. ArrayList ( e qualquer outro derivado de List e afins ) atualmente soh aceita objetos como argumento para os metodos add/get

  2. Qual o tipo de objeto que voce inseriu? o seu cast deve ser para o mesmo tipo, na hora de recuperar o valor

  3. 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