Foros del Web » Programación para mayores de 30 ;) » Java »

Calendar.getInstance() ?

Estas en el tema de Calendar.getInstance() ? en el foro de Java en Foros del Web. Bueno, aunque sé como es el codigo para utilizar la clase calendar, todavia por mas que he buscado y leido no consigo la explicacion de ...
  #1 (permalink)  
Antiguo 26/01/2014, 09:33
 
Fecha de Ingreso: octubre-2011
Mensajes: 90
Antigüedad: 12 años, 6 meses
Puntos: 1
Calendar.getInstance() ?

Bueno, aunque sé como es el codigo para utilizar la clase calendar, todavia por mas que he buscado y leido no consigo la explicacion de su creacion.

Calendar c = Calendar.getInstance();
esta es la linea para su creacion, segun leo llama al metodo getInstance de Calendar para crear un objeto Calendar, mi pregunta es: Como es eso posible si una clase abstracta no se puede instanciar, el propio metodo tiene de retorno Calendar, y yo he hecho prueba creando clases abstracta y siempre que lo intento me dice lo mismo: no se puede instanciar una clase abstracta.

En fin me gustaria saber como implementa el codigo dicho metodo para conseguir tal funcion.

Gracias y un saludo a todos.
  #2 (permalink)  
Antiguo 26/01/2014, 11:02
Avatar de rgf1987  
Fecha de Ingreso: diciembre-2012
Ubicación: Asturias
Mensajes: 269
Antigüedad: 11 años, 4 meses
Puntos: 22
Respuesta: Calendar.getInstance() ?

Cita:
Iniciado por luigimaldini Ver Mensaje
Como es eso posible si una clase abstracta no se puede instanciar, el propio metodo tiene de retorno Calendar, y yo he hecho prueba creando clases abstracta y siempre que lo intento me dice lo mismo: no se puede instanciar una clase abstracta.
Muy buenas,

el método getInstance() de la clase Calendar no crea una instancia de la clase Calendar, sino una instancia de la clase GregorianCalendar que hereda de Calendar.

Si buscas el código por google, lo puedes ver:

http://grepcode.com/file/repository....Instance%28%29
  #3 (permalink)  
Antiguo 26/01/2014, 11:12
 
Fecha de Ingreso: octubre-2011
Mensajes: 90
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: Calendar.getInstance() ?

Aja, pero es que en esa linea, Calendar llama a su metodo, y quiere decir que dentro de ese metodo es posible utilizar un metodo o datos de una subclase? la subclase si puede utilizar los datos o metodos de la clase, pero al reves no lo entiendo. En fin estoy hecho un lio. Saludos.
  #4 (permalink)  
Antiguo 26/01/2014, 11:27
Avatar de rgf1987  
Fecha de Ingreso: diciembre-2012
Ubicación: Asturias
Mensajes: 269
Antigüedad: 11 años, 4 meses
Puntos: 22
Respuesta: Calendar.getInstance() ?

El método getInstance de la clase Calendar:
Código Java:
Ver original
  1. public static Calendar getInstance()
  2.      {
  3.          Calendar cal = createCalendar(TimeZone.getDefaultRef(), Locale.getDefault());
  4.          cal.sharedZone = true;
  5.         return cal;
  6.     }

El método createCalendar:

Código Java:
Ver original
  1. private static Calendar createCalendar(TimeZone zone,
  2.                                            Locale aLocale)
  3.     {
  4.         // If the specified locale is a Thai locale, returns a BuddhistCalendar
  5.         // instance.
  6.         if ("th".equals(aLocale.getLanguage())
  7.             && ("TH".equals(aLocale.getCountry()))) {
  8.            return new sun.util.BuddhistCalendar(zone, aLocale);
  9.         } else if ("JP".equals(aLocale.getVariant())
  10.                    && "JP".equals(aLocale.getCountry())
  11.                    && "ja".equals(aLocale.getLanguage())) {
  12.             return new JapaneseImperialCalendar(zone, aLocale);
  13.         }
  14.  
  15.         // else create the default calendar
  16.         return new GregorianCalendar(zone, aLocale);
  17.     }

Como ves, en nuestro caso, se crea una instancia de la clase GregorianCalendar, que es lo que devuelve el método getInstance().

¿Qué es lo que no entiendes? jeje
  #5 (permalink)  
Antiguo 26/01/2014, 12:41
 
Fecha de Ingreso: octubre-2011
Mensajes: 90
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: Calendar.getInstance() ?

Sigo todavia perdido,jejeje. Bueno entonces ese metodo createCalendar pertenece a Calendar o a la subclase? supongo que pertenece a Calendar para poder crear desde ahi con gregoriancalendar,no? madre mia ufff. Saludos.
  #6 (permalink)  
Antiguo 26/01/2014, 16:37
Avatar de rgf1987  
Fecha de Ingreso: diciembre-2012
Ubicación: Asturias
Mensajes: 269
Antigüedad: 11 años, 4 meses
Puntos: 22
Respuesta: Calendar.getInstance() ?

Exacto, pertenece a la clase Calendar. Y como bien decías una clase abstracta no puede ser instanciada, pero se está instanciado un objeto de tipo GregorianCalendar.

No hay porque liarse jaja. ¿Que es lo que no ves claro?
  #7 (permalink)  
Antiguo 26/01/2014, 16:50
 
Fecha de Ingreso: octubre-2011
Mensajes: 90
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: Calendar.getInstance() ?

Bueno ahora creo que lo voy viendo un poco mas claro,jejejeje. Pero en el metodo el tipo de datos a devolver es Calendar, no deberia de ser GregorianCalendar?, Saludos y gracias por la paciencia.
  #8 (permalink)  
Antiguo 26/01/2014, 17:03
Avatar de rgf1987  
Fecha de Ingreso: diciembre-2012
Ubicación: Asturias
Mensajes: 269
Antigüedad: 11 años, 4 meses
Puntos: 22
Respuesta: Calendar.getInstance() ?

Cita:
Iniciado por luigimaldini Ver Mensaje
Bueno ahora creo que lo voy viendo un poco mas claro,jejejeje. Pero en el metodo el tipo de datos a devolver es Calendar, no deberia de ser GregorianCalendar?, Saludos y gracias por la paciencia.
Código Java:
Ver original
  1. public class GregorianCalendar extends Calendar

Aquí es donde aparecen los conceptos de herencia y de polimorfismo, la clase GregorianCalendar hereda de Calendar, por lo tanto puedes entender que GregorianCalendar es un tipo de Calendar.


Te dejo un enlace donde tienes un buen ejemplo y una buena explicación de lo que es el polimorfismo:

http://codejavu.blogspot.com.es/2013...o-en-java.html
  #9 (permalink)  
Antiguo 26/01/2014, 21:04
 
Fecha de Ingreso: octubre-2011
Mensajes: 90
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: Calendar.getInstance() ?

Aja, ahora creo que lo pille del todo, claro al ser una subclase hereda todo lo de la clase, y puede referirse como si fuese la clase base. bueno amigo un saludo de nuevo y gracias por la magnifica explicacion y la implementacion del metodo para verlo mas claro. Gracias.

Etiquetas: clase, metodo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:46.