(RESOLVIDO) Cast com Generics T_T

5 respostas
GabrielCardelli

Gente estava estudando pelo skype com meu mano...

Até que na parte de generics deu um Grand M

Não conseguimos passar um DOuble para Int Alguem pode ajudar???

CODIGO::

import java.util.ArrayList;
import java.util.List;

public class Test {
	void addValor(List<Double> a) {
		a.add(12312.123);
	}

	public static void main(String[] args) {
		ArrayList<Double> mylist = new ArrayList<Double>();
		Test p1 = new Test();
		p1.addValor(mylist);
		Double p2 = mylist.get(0) ;
		int p3 = (int)p2;
		System.out.println(p2);
		
		   
	}
}

Abraço obrg desd já...

5 Respostas

71C4700

Se não me engano é por conta do Ensure do Java…

Quando vc passa uma lista parametizada, voce está falando assim:

“Prometo que irei fazer tudo, mover, excluir, vender ou até mesmo abrir o codigo, mas nunca adicionar”

Java usa pra proteger que voce passe, em tempo de execução, um tipo diferente do declarado no parametro da lista passada…

void addValor(List<Double> a) { List<Double> list = Arrays.asList(a.toArray()); list.add(12312.123); a=list; }

Veja se este codigo funciona…

tnaires

Sinceramente, acho que isso não tem nada a ver com generics. Você está tentando converter um objeto Double em um tipo primitivo int. São tipos incompatíveis, cara!
Mostra aí a exception que tá dando.

ViniGodoy
tnaires:
Sinceramente, acho que isso não tem nada a ver com generics. Você está tentando converter um objeto Double em um tipo primitivo int. São tipos incompatíveis, cara! Mostra aí a exception que tá dando.
Exatamente. Assim funciona:
import java.util.ArrayList;
import java.util.List;

public class Teste {
    void addValor(List<Double> a) {
        a.add(12312.123);
    }

    public static void main(String[] args) {
        ArrayList<Double> mylist = new ArrayList<Double>();
        Teste p1 = new Teste();
        p1.addValor(mylist);
        Double p2 = mylist.get(0) ;
        int p3 = (int)p2.doubleValue();
        System.out.println(p2);
           
    }
}

Outra opção é mudar o tipo de p2 para double (com D minúsculo). Assim vai haver auto-unboxing, e você poderá fazer a conversão para int.

B

Ou usar double.intValue(), que já faz o cast para você.

GabrielCardelli

Realmente o erro era o "D"ouble de double.

Abraço obrg

Criado 16 de abril de 2009
Ultima resposta 17 de abr. de 2009
Respostas 5
Participantes 5