应该将org.joda.time.DateTimeZone声明为类中的静态字段,而不是每次都创建新实例

学习者

应该在类中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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

object time不是包org.joda的成员

Spring Boot 中从 org.joda.time.Interval 迁移

将org.joda.time转换为java.time

在Joda-Time中,将DateTime设置为月初

Joda Time将包含在Java 7中吗?

Joda Time / Jackson 2 / Spring的反序列化问题-无法实例化类型的值[简单类型,类org.joda.time.DateTime]

将joda LocalTime转换为sql time

Joda-Time:将JodaTime与时区转换

java.lang.RuntimeException:不支持的文字类型类org.joda.time.DateTime

如何使用 Scala 在 Spark Streaming 中序列化 org.joda.time.DateTime?

在Java中8极品非proleptic公历纪年(如org.joda.time.chrono.GJChronology)

线程“主”中的异常java.lang.NoClassDefFoundError:org / joda / time / ReadableInstant

将org.joda.time.Period转换为java.time.Period

月末在Joda Time月份中循环播放

我应该使用Java日期和时间类,还是应该使用Joda Time这样的第三方库?

我应该使用Threeten代替joda-time吗?

为什么Joda time将输入字符串中的PM更改为AM?

将Joda-Time日期时间存储在数据库中

在Joda-Time中,将DateTime与日期和时间分开,并以时区`Z`结尾。

Jodatime:无法解析导入的org.joda.time.Weeks

java.lang.NoClassDefFoundError:org.joda.time.DateTime

如何使用org.joda.time设置时区?

在AndroidX中导入org.joda.time的问题

参数类型的隐式 ParameterBinderFactory[org.joda.time.LocalDateTime]

如何使用Joda-Time在Java中设置Time属性

Joda Time LocalDate(对象即时,DateTimeZone区域)构造函数的目的

Joda-Time将天数转换为月数

将Joda Time添加到Android Studio

使用Scala的Joda Time发生类中断错误