OK, vamos por partes...

1. Atributos de tipos primitivos são inicializados com 0 (false em boolean)
e referências com null automaticamente antes da execução do construtor.

ClassCastException não é um erro que vc vai resolver mexendo em referências.
Esta exceção ocorre quando vc recebe uma instância de um tipo e estava
esperando outro tipo. A JVM tenta converter (cast) a classe (class) e
encontra uma situação excepcional (exception).

Isto ocorre por exemplo se vc fizer algo tipo:

Object a = new Classe1();
Classe2 b = (Classe2) a; <-forçando um cast

Se Classe1 não for descendente de Classe2, vai dar ClassCastException.

Este é o cenário em que normalmente isto acontece.

Aparentemente, não tem nada de errado no seu código, mas como eu não estou
vendo o código da Classe1, imagino o que deva ser.

O professor deve ter falado que Tree(Set ou Map) ordena e pra isso os
elementos adicionados (chaves no Map) precisam implementar a interface
Comparable<T1, T2> ou vc precisa fornecer uma instância de uma classe que
implemente Comparator<T1,T2>  no construtor do Tree(Set ou Map).

Como vc não forneceu um Comparator, o TreeMap não vai usar nenhum pra
ordenar as chaves. Ele vai usar um método da interface Comparable da
Classe1. Pra isso, ele vai fazer um cast para Comparable. Algo semelhante ao
que eu apontei acima.

Comparable c = (Comparable) classe1;

E vai lançar exatamente esta exceção. A exceção deve estar ocorrendo na
linha "mapaClasse2.put(x, y);" do método incluirCampo(...), certo?

Verifique isto e me diga se acertei ou errei pq estou tentando descobrir o
que aconteceu sem saber onde foi a exceção e sem ver o trecho de código onde
acho que tem erro. :-P

Abraço

Peter P. Lupo
http://craftnicely.blogspot.com - http://sites.google.com/site/pplupo
MPS.BR Authorized Implementation Practitioner - Certified ScrumMaster
Sun Certified Java Associate - Java Brown Belt
+55 (021) 81742487


2010/6/15 Léo <[email protected]>

> Oi, não podia retornar antes...
>
>
> Obrigado, ajudou a entender. Agora eu vou perguntar outra coisa...
>
> Quando criamos uma instância de classe vazia em que os atributos são
> do tipo int, necessariamente devemos preenchê-la com o número zero em
> seu argumento?
>
> Estou com problemas de fazer funcionar um programa que retorna
> java.lang.ClassCastException. A Classe que me referi como argumento
> (Key) do TreeMap está no mesmo pacote.
> Fiz assim:
>
> public class Classe2 {
>        TreeMap<Classe1,String> mapaClasse2;
>        Classe1 x = new Classe1(0,0,0); ----------> Primeiro eu deixei sem
> isso, e depois coloquei isso mas dá na mesma no final.
>
>        public Classe2() {
>                mapaClasse2 = new TreeMap<Classe1,String>();
>        }
>
>        public void incluirCampo (Classe1 x, String y){
>                this.x = x;----------> Tb antes tava sem essa parte, e
> depois
> coloquei isso mas dá na mesma no final.
>                mapaClasse2.put(x, y);
>        }
>
> A Exception ocorre quando a main vai testar e faz isso:
> public class TestaClasse2 {
>    public static void main(String[] args) {
>                    String segundoCampo;
>                    Classe1 x;
>                    Classe2 y = new Classe2();
>                     y.incluirCampo(new Classe1(1,2,3), "blablabla");
>
>
> Obrigado.
>
>
>
> On 15 jun, 13:57, "Peter P. Lupo" <[email protected]> wrote:
> > Elaborando um pouco mais a resposta, é assim que se declara:
> > TreeMap<Classe1, Classe2>
> >
> > Aí temos apenas declaração de tipo. Não faz sentido envolver variáveis
> aí.
> >
> > put(referencia, referencia) <-assim
> >
> > sua referência pode estar em uma variável ou não.
> >
> > Em variável:
> >
> > Classe1 x = new Classe1();
> > Classe2 y = new Classe2();
> >
> > put(x,y);
> >
> > Sem variáveis:
> >
> > put(new Classe1(), new Classe2());
> >
> > Ou qualquer combinação disso.
> >
> > Abraço
> >
> > Peter P. Lupohttp://craftnicely.blogspot.com-
> http://sites.google.com/site/pplupo
> > MPS.BR Authorized Implementation Practitioner - Certified ScrumMaster
> > Sun Certified Java Associate - Java Brown Belt
> > +55 (021) 81742487
> >
> > 2010/6/15 Carlos Lopes <[email protected]>
> >
> >
> >
> > > Se variável já for uma instância da Classe não precisa dar new.
> >
> > > [s]
> > > ttc
> >
> > > On Tue, Jun 15, 2010 at 12:18 PM, Léo <[email protected]>
> wrote:
> >
> > >> quando criamos uma classe e depois ela pertence a um argumento chave
> > >> do TreeMap nós colocamos assim?
> > >> <Classe variavel, valor>
> >
> > >> e na hora de criar um método para incluir no TreeMap damos um
> > >> put(variavel,variavel) ou (put new Classe (...),variavel)?
> >
> > >> Abraços.
> >
> > >> --
> > >> You received this message because you are subscribed to the Google
> Groups
> > >> "Comp 2 - Geral" group.
> > >> To post to this group, send email to [email protected].
> > >> To unsubscribe from this group, send email to
> > >> [email protected]<comp2-geral%[email protected]>
> <comp2-geral%2bunsubscr...@googlegr oups.com>
> > >> .
> > >> For more options, visit this group at
> > >>http://groups.google.com/group/comp2-geral?hl=en.
> >
> > >  --
> > > You received this message because you are subscribed to the Google
> Groups
> > > "Comp 2 - Geral" group.
> > > To post to this group, send email to [email protected].
> > > To unsubscribe from this group, send email to
> > > [email protected]<comp2-geral%[email protected]>
> <comp2-geral%2bunsubscr...@googlegr oups.com>
> > > .
> > > For more options, visit this group at
> > >http://groups.google.com/group/comp2-geral?hl=en.
>
> --
> You received this message because you are subscribed to the Google Groups
> "Comp 2 - Geral" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected]<comp2-geral%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/comp2-geral?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups "Comp 
2 - Geral" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/comp2-geral?hl=en.

Responder a