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.
