我是一名初级 Java 程序员,我一直在阅读有关 Calendar 类的内容。它是一个抽象类,它的所有方法都是静态的,但它的使用如下:
Calendar cal = Calendar.getInstance();
您cal
用来调用方法的地方,例如:
cal.setTimeinMillis(day1);
我对此感到困惑。当针对一个类调用方法时,为什么我们需要一个引用变量,这对于静态方法是合法的吗?
Calendar cal = Calendar.getInstance();
不是调用构造函数,它只是调用返回某个子类(的Calendar
)实例的(静态)方法。
1) 日历不是日历
2)Calendar.getInstance()
可能会返回日历的一些具体实现GregorianCalendar
。
3) cal.setTimeinMillis(day1); 是对象方法,不是静态的。
再看一下文档;做任何有趣事情的 Calendar 的大多数方法(除了 getInstance() 方法)都不是静态的,并且需要一个实例(这确实是日历所代表的时刻的容器)。
setTimeInMillis() 不是静态的。您需要调用 getInstance() 方法来返回实例的原因是有多个 getInstance() 方法,您可以针对不同的时区和/或与默认设置不同的语言环境调用它们。您选择的时区或语言环境会影响其他方法的工作方式。