我正在学习一个教程,而讲师似乎掩盖了一些没有意义的东西
在 Java 中,如果我想实例化一个新的公历日期对象,我会使用:
GregorianCalendar gc= new GregorianCalendar (2010,1,14);
但如果我想使用数据格式对象,我会使用:
DateFormat df = DateFormat.getDateInstance();
我很想明白为什么 dateformat 不遵循第一种实例化类的方式?
我怎么知道将来要注意类似的陷阱?
最佳答案
您应该始终查阅 API 文档以了解如何使用它。
new X()
总是创建一个新对象,因此如果您有多个地方需要它,您最终会得到多个 X,如果一个 X 就可以,那么效率可能会很低。
.getDateInstance()
调用是一个工厂,它允许 API 自行决定是向多个调用者返回相同的 X 还是向每个调用者返回一个新的 X .对于非常昂贵但可重用/可共享的对象,这是获得它们的典型方式。
Calendar API 是很久以前捐赠给 Java 的,但设计并不尽如人意。如今,对 Java 中“我在 Calendar 和/或 java.util.Date 上遇到问题 X”的典型响应是使用 设计良好的 Joda 库。对于使用 Java 8 或更高版本的新代码,请使用 Basil Bourque 评论的新 java.time 类。
关于java - 什么时候使用 New 来实例化一个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8654734/