首页 > 解决方案 > 实例化公历对象

问题描述

在公历上的 Oracle Java 文档中,它给出了一个示例:

// create a GregorianCalendar with the Pacific Daylight time zone
// and the current date and time
Calendar calendar = new GregorianCalendar(pdt);

我理解GregorianCalendarCalendar抽象类的子类。

我从示例中不明白的是为什么它没有这样编写代码:

GregorianCalender calendar = GregorianCalendar(pdt);

标签: javaabstract-classgregorian-calendar

解决方案


100% 可以这样做:

GregorianCalender calendar = GregorianCalendar(pdt);

示例显示这一点的原因:

Calendar calendar = new GregorianCalendar(pdt);

是因为这更灵活一点。

假设您的代码适用于任何类型的日历。也就是说,它不依赖于公历中的具体细节。在这种情况下,您可以将Calendar其用作变量的类型,您的代码仍然可以编译并正常工作。

通过Calendar用作变量类型,您允许该变量calendar保存任何类型的日历。假设您的需求发生了变化,您现在允许用户选择他们想要使用的日历系统。现在你只需要改变=标志的一部分。无需更改变量的类型。


推荐阅读