Pregunta

Necesito a mantener un número de fechas en mi programa y lo que estoy haciendo en la forma de una matriz de Calendario de objetos.

Para el acceso de otras varias clases, tengo la intención de declarar en una clase independiente y de importación de la matriz como un conjunto estático de importación.

Ahora ¿cómo puedo configurar los valores para cada uno de esos objetos?Soy capaz de inicializar ellos y acceder a ellos desde la otra clase como esta :

public static Calendar[] cal = new Calendar[]{
                                    Calendar.getInstance(),
                                    Calendar.getInstance()};

Ahora ¿cómo puedo configurar los valores de a ellos?

He intentado Calendar.getInstance().set(2012, 11, 10, 16, 30) pero me da un error con ninguna de las sugerencias.

Así,

  1. Es estático importar el correcto (o mejor) manera de hacer esto?
  2. ¿Cómo puedo configurar los valores de a él?
¿Fue útil?

Solución

La estática de importación es irrelevante, aunque, francamente, no es terriblemente agradable tener un acceso público de escritura de campo de una matriz mutable de los objetos mutables (calendarios).Un mejor enfoque sería para exponer una ImmutableList<DateTime> el uso de Guayaba para ImmutableList y Joda Tiempo para DateTime.(O, posiblemente, LocalDateTime De todos modos...

Usted podría utilizar un inicializador estático bloque, pero probablemente me acaba de escribir un método:

public static Calendar[] cal = createCalendars();

private static Calendar[] createCalendars() {
    Calendar[] ret = new Calendar[2];
    ret[0] = Calendar.getInstance();
    ret[0].set(2012, 11, 10, 16, 30);
    ret[1] = Calendar.getInstance();
    ret[1].set(...);
    return ret;
}

Otros consejos

Esto puede no adaptarse a su gusto, pero es cierto que es una forma bastante concisa de hacerlo:

public static final Calendar[] cal = createCal(
    2012, 11, 10, 16, 30,
    2012, 11, 11, 16, 30,
    2012, 11, 12, 16, 30
);
static Calendar[] createCal(int... fields) {
  final List<Calendar> cl = new ArrayList<Calendar>();
  for (int i = 0; i < fields.length;) {
    final Calendar c = Calendar.getInstance();
    c.set(fields[i++], fields[i++], fields[i++], fields[i++], fields[i++]);
    cl.add(c);
  }
  return cl.toArray(new Calendar[cl.size()]);
}

Sólo FYI, el valor de:

calendario.getinstancia (). Set (2012, 11, 10, 16, 30)

es el valor devuelto por set: void. Así que no se puede inicializar

calendario cal= calendar.getinstancia (). Set (2012, 11, 10, 16, 30)

Vea las respuestas más completas de Jon & Marko.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top