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

UKD*_*eek 3 java instantiation

我只是在看一个教程,导师似乎掩饰了一些没有意义的东西

在Java中,如果我要实例化一个新的Gregorgian日期对象,我将使用:

GregorianCalendar gc= new GregorianCalendar (2010,1,14);
Run Code Online (Sandbox Code Playgroud)

但是,如果我要使用数据格式对象,则可以使用:

DateFormat df = DateFormat.getDateInstance();
Run Code Online (Sandbox Code Playgroud)
  1. 我真的很想了解为什么dateformat不遵循实例化类的第一种方法?

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

Tho*_*sen 5

您应该始终查阅API文档,以了解如何使用它。

new X()所以如果你有你需要的多个地方,你有多个X'es这可能是低效的,如果一个X会做最终总是创建一个新的对象。

.getDateInstance()呼叫是一个工厂,允许API自行决定是否相同的X返回甚至给多个来电或新的每一个。对于非常昂贵但可重复使用/可共享的对象,这是获取它们的典型方法。

Calendar API是很久以前捐赠给Java的,其设计不尽人意。这些天,“我有问题,X与日历和/或java.util.Date”在Java中,通常的做法是使用乔达库,精心设计的。对于使用Java 8或更高版本的新代码,请使用Basil Bourque注释的新java.time类。