java - 什么时候使用 New 来实例化一个类

标签 java instantiation

我正在学习一个教程,而讲师似乎掩盖了一些没有意义的东西

在 Java 中,如果我想实例化一个新的公历日期对象,我会使用:

GregorianCalendar gc= new GregorianCalendar (2010,1,14);

但如果我想使用数据格式对象,我会使用:

DateFormat df = DateFormat.getDateInstance();
  1. 我很想明白为什么 dateformat 不遵循第一种实例化类的方式?

  2. 我怎么知道将来要注意类似的陷阱?

最佳答案

您应该始终查阅 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/

相关文章:

java - java 分词器(字符串)

java - 类无法识别 Java 中的方法

java - 泛型通配符实例化

c# - 实例化:将列表移动到参数中

java - 如何使用运行时加载的属性参数化 ehcache.xml?

针对 HTML 和其他无效输入的 Java 服务器端验证

java - 尝试在 Java6 中获取 Unix 文件权限时出错

Java - 对非静态字段列表进行静态引用

C++:为什么编译器在不使用时实例化模板

c# - 我需要帮助从单个方法和类实例化多个对象