Rapaz, eu entendi (ou acho,rsrs). Acontece que eu não pensei no
Comparable. Faz sentido. Acho que eu devia colocar na Classe1
implements Comparable. Acontece que eu não sabia aplicar isso e
entender como funcionava (to falando do Comparable).
Olha valeu por ter tentado aí. Só agora li a sua mensagem pq passei o
dia fora de casa e estou estudando para duas provas (uma amanhã e
outra sexta). Só vou poder testar no final de semana e te respondo. O
problema da Exception aponta exatamente pro método Incluir na Classe2
e do seu uso na main.

Faz um teste sem implementar Comparable na Classe1.

Valeu.

On 16 jun, 08:42, "Peter P. Lupo" <[email protected]> wrote:
> 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. 
> 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 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%2bunsubscr...@googlegr
> > > >>  oups.com>
> > <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%2bunsubscr...@googlegr
> > > >  oups.com>
> > <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%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].
For more options, visit this group at 
http://groups.google.com/group/comp2-geral?hl=en.

Responder a