我需要在我的程序中维护一些日期,我正在以Calendar对象数组的形式进行维护。
为了从其他几个类访问它,我计划在一个单独的类中声明它,并将数组导入为一个静态导入。
现在,我如何为每个对象设置值?我能够初始化它们并从其他类访问它们,如下所示:
public static Calendar[] cal = new Calendar[]{
Calendar.getInstance(),
Calendar.getInstance()};现在,我如何为它们设置值?
我尝试了Calendar.getInstance().set(2012, 11, 10, 16, 30),但是我得到了一个错误,没有任何建议。
所以,
发布于 2012-07-28 08:44:00
静态导入部分无关紧要,尽管坦率地说,拥有一个可公开访问的可变对象数组(日历)的可写字段并不太好。更好的方法是使用番石榴( ImmutableList )和Joda时间 ( DateTime )公开一个DateTime。(或者可能是LocalDateTime)无论如何.
您可以使用静态初始化程序块,但我可能只需要编写一个方法:
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;
}发布于 2012-07-28 09:42:36
这可能不适合你的口味,但无可否认,这是一种相当简洁的方法:
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()]);
}发布于 2012-07-28 09:47:24
只是FYI,价值:
Calendar.getInstance().set(2012、11、10、16、30)
set:void返回的值。所以你不能初始化
日历cal = Calendar.getInstance().set(2012、11、10、16、30)
见Jon &Marko的更完整的答案。
https://stackoverflow.com/questions/11699513
复制相似问题