[DUVIDA]Diferença entre Calendar e Gregorian Calendar  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
Henrique Fernandes
JavaChild
[Avatar]

Membro desde: 13/01/2009 15:06:44
Mensagens: 106
Localização: Recife, PE
Offline

Boa tarde pessoal, gostaria de saber qual a real diferença entre calendar e gregorian calendar.

Agradeço a todos que puderem ajudar!


[]'s

Um dia SCJP 6.0
[Email]
leonickel
JavaChild

Membro desde: 28/08/2007 19:51:12
Mensagens: 141
Localização: São Paulo - SP
Offline

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

Henrique Fernandes
JavaChild
[Avatar]

Membro desde: 13/01/2009 15:06:44
Mensagens: 106
Localização: Recife, PE
Offline

leonickel wrote: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



Quando usar uma e outra?

Um dia SCJP 6.0
[Email]
leonickel
JavaChild

Membro desde: 28/08/2007 19:51:12
Mensagens: 141
Localização: São Paulo - SP
Offline

Henrique Fernandes wrote:
leonickel wrote: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



Quando usar uma e outra?


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

este código irá retornar um Objeto GregorianCalendar com a data atual;
este código irá retornar um objeto GregorianCalendar com a data que foi passada como argumento
ozix
JavaEvangelist

Membro desde: 25/05/2006 18:00:15
Mensagens: 326
Localização: Porto Velho
Offline

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():

This message was edited 1 time. Last update was at 23/06/2009 19:26:36


O céu é azul porque a matrix roda em Windows
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 20573
Localização: Curitiba/PR
Offline

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.

@ViniGodoy - Lattes

Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team