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)
我真的很想了解为什么dateformat不遵循实例化类的第一种方法?
我怎么知道将来要注意类似的陷阱?
您应该始终查阅API文档,以了解如何使用它。
一new X()所以如果你有你需要的多个地方,你有多个X'es这可能是低效的,如果一个X会做最终总是创建一个新的对象。
该.getDateInstance()呼叫是一个工厂,允许API自行决定是否相同的X返回甚至给多个来电或新的每一个。对于非常昂贵但可重复使用/可共享的对象,这是获取它们的典型方法。
Calendar API是很久以前捐赠给Java的,其设计不尽人意。这些天,“我有问题,X与日历和/或java.util.Date”在Java中,通常的做法是使用乔达库,是精心设计的。对于使用Java 8或更高版本的新代码,请使用Basil Bourque注释的新java.time类。