Java.lang.String cannot be cast

16 respostas
rafa120

Boa tarde pessoal, gostaria da ajuda de vcs por favor
como eu resolvo este erro de conversão?

CadContrato c = (CadContrato) cbIDContrato.getSelectedItem(); //O erro é apontado aqui ContratoDao dao = new ContratoDao(); dao.valorTotalNF(c.getId_contrato()); lblValorTotalNF.setText(dao.valorTotalNF.replace(".", ","));

ERRO

java.lang.ClassCastException: java.lang.String cannot be cast to obras.logica.CadContrato

16 Respostas

renamed

rafa120:
Boa tarde pessoal, gostaria da ajuda de vcs por favor
como eu resolvo este erro de conversão?

CadContrato c = (CadContrato) cbIDContrato.getSelectedItem(); //O erro é apontado aqui ContratoDao dao = new ContratoDao(); dao.valorTotalNF(c.getId_contrato()); lblValorTotalNF.setText(dao.valorTotalNF.replace(".", ","));

ERRO

java.lang.ClassCastException: java.lang.String cannot be cast to obras.logica.CadContrato

cbIDContrato.getSelectedItem();

Retorna uma String, provavelmente.
Você está tentando transformar uma string em um tipo CadContrato. Como o Java não vê relação entre os dois lança essa exceção.
ok?

rafa120

Certo, eu estava pesquisando isso e vi que é este erro. Mas eu nao sei como eu altero isso, alguma solução?

olha, eu tenho este combobox e um evento de ação pra ele
esta ação seta um texto num label.
só que pra este texto aparecer preciso pegar apenas o primeiro valor ai que esta neste combo, antes do —

renamed

Claro, mas acredito que nenhuma que você não consiga não pensar.

Se você recebe uma String desse método. O que ela significa?
Pegue esse significado e crie um novo objeto CadContrato que o simbolize.
Se você manipula uma estrutura de dados, como uma lista, tente obter o elemento que represente essa String na lista.

renamed

rafa120:
Certo, eu estava pesquisando isso e vi que é este erro. Mas eu nao sei como eu altero isso, alguma solução?

olha, eu tenho este combobox e um evento de ação pra ele
esta ação seta um texto num label.
só que pra este texto aparecer preciso pegar apenas o primeiro valor ai que esta neste combo, antes do —

Existem várias formas de se manipular essa string… split, left, substring.
Procure por esses métodos da classe string.

Vmaia

rafa120:
Certo, eu estava pesquisando isso e vi que é este erro. Mas eu nao sei como eu altero isso, alguma solução?

olha, eu tenho este combobox e um evento de ação pra ele
esta ação seta um texto num label.
só que pra este texto aparecer preciso pegar apenas o primeiro valor ai que esta neste combo, antes do —

Vc pode add no combo o objeto CadContrato , o qual vc pode sobreescrever o metodo toString() para poder exibir no “label” do combo os valores que vc deseja.

Com isso o getItem() vai te devolver o objeto :smiley:

rafa120

olha, eu utilizo este metodo pra poder adicionar estes 2 objetos q vcs estao vendo na imagem

NotaFiscalDao dao = new NotaFiscalDao(); List<CadContrato> listaContratos = dao.ListaIdContrato(); for (CadContrato cc : listaContratos) cbIDContrato.addItem(cc.getId_contrato() +" --- "+ cc.getContratada());

isso funciona tudo ok, mas como falei… no evento ele precisa pegar apenas o primeiro objeto o idContrato

sobre o split eu até algumas funcoes eu tenho o split, mas como ele entraria neste metodo q esta no 1 post?

Vmaia

Seguinte …

NotaFiscalDao dao = new NotaFiscalDao(); List<CadContrato> listaContratos = dao.ListaIdContrato(); for (CadContrato cc : listaContratos) cbIDContrato.addItem(cc);
e na classe CadContrato… sobreescreve…

public String toString(){ return this.getId_contrato() +" --- "+ this.getContratada(); }
Acredito que isso resolve … pois quando for invocada a lista no combo, ele (como) chama o toString() do item da lista

rafa120

Vmaia, deu certo!

Na verdade eu já tinha isso, só que o cbIDContrato.addItem(cc) era oq faltava!

@Override public String toString() { return this.getId_contrato()+ "---" + this.getContratada(); }

Valeu Vmaia!
Obrigado a todos pela ajuda!!

rafa120

Arrumado um, deu erro em outra coisa

agora ele da um java.lang.NullPointerException quando eu escolho outro item ai dentro do meu combobox

o erro é nesta linha, dentro do mesmo codigo do 1 post
nao entendi o pq do erro, sendo q antes estava normal…

lblValorTotalNF.setText(dao.valorTotalNF.replace(".", ","));
ViniGodoy

[quote=rafa120]Arrumado um, deu erro em outra coisa

agora ele da um java.lang.NullPointerException quando eu escolho outro item ai dentro do meu combobox

o erro é nesta linha, dentro do mesmo codigo do 1 post
nao entendi o pq do erro, sendo q antes estava normal…

lblValorTotalNF.setText(dao.valorTotalNF.replace(".", ","));

NullPointerException tem apenas um significado. Algo que você selecionou era nulo. Não seria esse DAO? Ou será que o valorTotalNF?
A maneira mais fácil de descobrir isso geralmente é através de um depurador.

rafa120

[quote=ViniGodoy]

rafa120:
Arrumado um, deu erro em outra coisa

agora ele da um java.lang.NullPointerException quando eu escolho outro item ai dentro do meu combobox

o erro é nesta linha, dentro do mesmo codigo do 1 post
nao entendi o pq do erro, sendo q antes estava normal…

lblValorTotalNF.setText(dao.valorTotalNF.replace(".", ","));

NullPointerException tem apenas um significado. Algo que você selecionou era nulo. Não seria esse DAO? Ou será que o valorTotalNF?
A maneira mais fácil de descobrir isso geralmente é através de um depurador.

Bom, se seria eu nao sei te dizer. Porque meu valorTotalNf faz um resultset e antes de colocar este CC funcionava normal, qualquer contrato mostra os valores no label

desculpe a ignorancia, mas como eu depuro?

ViniGodoy

[quote=rafa120]

ViniGodoy:
rafa120:
Arrumado um, deu erro em outra coisa

agora ele da um java.lang.NullPointerException quando eu escolho outro item ai dentro do meu combobox

o erro é nesta linha, dentro do mesmo codigo do 1 post
nao entendi o pq do erro, sendo q antes estava normal…

lblValorTotalNF.setText(dao.valorTotalNF.replace(".", ","));

NullPointerException tem apenas um significado. Algo que você selecionou era nulo. Não seria esse DAO? Ou será que o valorTotalNF?
A maneira mais fácil de descobrir isso geralmente é através de um depurador.

Bom, se seria eu nao sei te dizer. Porque meu valorTotalNf faz um resultset e antes de colocar este CC funcionava normal, qualquer contrato mostra os valores no label

desculpe a ignorancia, mas como eu depuro?

Está em inglês, mas basicamente é o que o vídeo mostra: http://www.youtube.com/watch?v=joWldbcp1So

rafa120

feito
o id_contrato tem valor
nao tem nada null

mas o valorTotalNF na coluna valor esta null

mas como pode estar null, sendo q no banco tem valor? kkk

e o problema persiste!

ViniGodoy

Então é hora de revisar o local onde você carrega do banco. Uma coisa é fato, ali está null. Agora é só descobrir o porque, hehehe.

rafa120

arrumei, fui la no banco dei um seelect e tinha valor, mas me retornava null mesmo... esquisito d+
ai deletei e fiz outro registro e tudo ok

agora apareceu outro problema.
ele funciona este medodo, grava no banco. Mas somente o primeiro registro, se selecionar qualquer outro, ele grava somente o primeiro e nao atualiza o combobox qdo puxo os dados do banco. Normalmente sem este metodo abaixo, funciona tudo normalmente.

String itemComboBox = cbIDContrato.getItemAt(0).toString();
String[] itemsComboBox = itemComboBox.split("---");
String idContrato = itemsComboBox[0];
String contratada = itemsComboBox[1];

nf.setId_contrato(idContrato);
rafaelshock

estou com o mesmo problema, mas o primeiro…

java.lang.ClassCastException: java.lang.String cannot be cast to br.com.banhotosa.Model.Cliente
Criado 26 de junho de 2010
Ultima resposta 8 de nov. de 2013
Respostas 16
Participantes 5