应该在类中org.joda.time.DateTimeZone
定义,static
而不是每次都需要创建新实例,尤其是在我们始终使用相同时区的情况下。
DateTimeZone
是线程安全的且不可变的,因此每次创建一个新实例都没有意义。我的想法正确吗?
为了增加更多的细节,目前我的班级DateTimeZone
总是在相同的时区中在我的班级的构造函数中创建一个对象,因此我想为什么不将其设置为静态而不是每次都创建一个新的对象。
是的,我想你可以创建是一个static
领域-和链接在@ Mike的答案告诉你这样做的可能的缺点(如可能出现的问题,如果你想在不同的时区等,以测试你的代码)。
但是,如果您担心性能和内存使用情况,那我就不用太担心了。似乎Joda-Time使用DateTimeZone
对象的内部缓存:
DateTimeZone zone = DateTimeZone.forID("Europe/London");
DateTimeZone other = DateTimeZone.forID("Europe/London");
System.out.println(zone == other); // true
上面的代码显示true
,这意味着两者是同一个对象。
当然,这是一个实现细节(我使用的是Joda-Time 2.9.9),依靠这些细节是不好的,因为这些事情可能会发生变化。
无论如何,如果您确定此时区永远不会改变,则可以进行设置static
。如果将来有可能有多个,那就不要(我不会)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句