4

我是一名初级 Java 程序员,我一直在阅读有关 Calendar 类的内容。它是一个抽象类,它的所有方法都是静态的,但它的使用如下:

Calendar cal = Calendar.getInstance();

cal用来调用方法的地方,例如:

cal.setTimeinMillis(day1); 

我对此感到困惑。当针对一个类调用方法时,为什么我们需要一个引用变量,这对于静态方法是合法的吗?

4

4 回答 4

9
Calendar cal = Calendar.getInstance();

不是调用构造函数,它只是调用返回某个子类(的Calendar)实例的(静态)方法。

于 2013-07-09T20:07:54.847 回答
3

1) 日历不是日历

2)Calendar.getInstance()可能会返回日历的一些具体实现GregorianCalendar

3) cal.setTimeinMillis(day1); 是对象方法,不是静态的。

于 2013-07-09T20:12:55.500 回答
3

再看一下文档;做任何有趣事情的 Calendar 的大多数方法(除了 getInstance() 方法)都不是静态的,并且需要一个实例(这确实是日历所代表的时刻的容器)。

于 2013-07-09T20:09:57.887 回答
1

setTimeInMillis() 不是静态的。您需要调用 getInstance() 方法来返回实例的原因是有多个 getInstance() 方法,您可以针对不同的时区和/或与默认设置不同的语言环境调用它们。您选择的时区或语言环境会影响其他方法的工作方式。

于 2013-07-09T20:14:34.950 回答