Cara, eu não tenho tempo de testar não... *rs* Eu teria que criar o projeto, as 3 classes...
Mais fácil vc colocar o implements Comparable<Classe1> e implementar o compareTo(Classe1 c). É simples. Se a instância corrente for maior que a recebida como parâmetro, retorne um número positivo (1, por exemplo). Caso seja menor, retorne -1. Se forem iguais, retorne 0. 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/16 Léo <[email protected]> > 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%[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%[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%[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.
