Boa tarde pessoal, gostaria de saber qual a real diferença entre calendar e gregorian calendar.
Agradeço a todos que puderem ajudar!
[]'s
Boa tarde pessoal, gostaria de saber qual a real diferença entre calendar e gregorian calendar.
Agradeço a todos que puderem ajudar!
[]'s
Calendar é uma classe Abstrata que possui algumas informações genéricas. Por Calendar ser abstrata vc nao consegue instanciá-la.
GregorianCalendar é uma classe concreta que extende Calendar e possui algumas informações adicionais específicas
[quote=leonickel]Calendar é uma classe Abstrata que possui algumas informações genéricas. Por Calendar ser abstrata vc nao consegue instanciá-la.
GregorianCalendar é uma classe concreta que extende Calendar e possui algumas informações adicionais específicas
[/quote]
Quando usar uma e outra?
[quote=Henrique Fernandes][quote=leonickel]Calendar é uma classe Abstrata que possui algumas informações genéricas. Por Calendar ser abstrata vc nao consegue instanciá-la.
GregorianCalendar é uma classe concreta que extende Calendar e possui algumas informações adicionais específicas
[/quote]
Quando usar uma e outra?[/quote]
A classe GregorianCalendar é mto usada para criar uma data passada, pois qndo vc dá um new vc pode passar como argumentos o ano, mes, dia, etc…, já a classe Calendar como vc nao consegue instanciá-la, ela acaba sendo usada mais para efeito de polimorfismo
Calendar cal = Calendar.getInstance();
este código irá retornar um Objeto GregorianCalendar com a data atual;
Calendar cal2 = new GregorianCalendar(2008, Calendar.JULY, 15)
este código irá retornar um objeto GregorianCalendar com a data que foi passada como argumento
Fique sempre o mais abstrato possível. Prefira interfaces. Se não tiver, Classes abstratas.
Usar implementações são exceções. Caso haja uma real necessidade.
Veja no ótimo exemplo de nosso amigo leonickel. Embora esteja usando a implementação GregorianCalendar, sua variável é do tipo Calendar.
Se houver uma classe/método Factory (como Calendar.getInstance()), use-a, pelo mesmo motivo: quanto menos dependente de implementação seu código for, melhor.
Uma alternativa a usar o GregorianCalendar diretamente é user o métdo set():
Calendar cal = Calendar.getInstance();
cal.set(2008, Calendar.JULY, 15);
Calendar representa um calendário genérico.
GregorianCalendar representa o nosso calendário, utilizado no nosso dia-a-dia.
Entretanto, não existe somente nosso calendário. Você poderia querer trabalhar com o padrão Juliano, com o calendário judeu, ou com outro formato de calendário, criado por você (como as datas em Klingon, por exemplo).
Por isso, define-se uma interface de uso comum, Calendar, que permite que um programa manipule um calendário qualquer. E também define-se as suas implementações, para os diversos tipos de calendário.
A implementação da Sun, a respeito de calendários é extremamente falha. Esse modelo não só não atende o problema, como torna seu código extremamente complexo e rebuscado. Já que você está trabalhando com datas, considere com carinho a possibilidade de implementar uma API como o JODA-Time.