什么是最便宜的 java Joda DateTime 更新方法?
What is the least expensive java Joda DateTime update method?
我正在寻找更新 DateTime
对象的时间。我注意到有两种不同的方法可以创建具有更新时间的 DateTime
对象的副本,但我不确定使用哪种方法。
使用其中一个比另一个有优势吗?
import org.joda.time.DateTime;
DateTime oldTime = DateTime.now()
newTime = oldTime.withMinuteOfHour(30)
对比
import org.joda.time.DateTime;
DateTime oldTime = DateTime.now()
newTime = oldTime.minuteOfHour.setCopy(30)
它们可能大致相同 - 这是 withMinuteOfHour 的源代码 -
public DateTime withMinuteOfHour(int minute) {
return withMillis(getChronology().minuteOfHour().set(getMillis(), minute));
}
虽然 minuteOfHour 是 -
public Property minuteOfHour() {
return new Property(this, getChronology().minuteOfHour());
}
所以调用的核心都是一样的
谈论性能 - 我真的不太在意,因为这 3 行几乎永远不会成为您应用程序的瓶颈,除非您正在处理极端内存密集型应用程序,其中可能有一个额外的对象很重要。 (如你所知,我查看了源代码,发现第二种方法创建了一个额外的 Property
对象)
谈到可读性——当然我会选择第一个。因为我必须去 API 看看 setCopy()
做了什么。第一个清楚地表明了意图,它是请求一个新的 DateTime
对象,并将 minuteOfHour
设置为传递的值。
这是我不喜欢第二种方法的另一个原因。 minuteOfHour()
方法returns一个Property
:
Property minuteOfHour = date.minuteOfHour();
现在 属性 可以分配给 date
的任何 属性。我可以稍后做:
minuteOfHour = date.dayOfYear();
这会编译,但会更改变量的含义而不实际更改名称。这意味着,当您调用 Property#setCopy()
.
时,您不会真正知道您设置的是什么 属性
我正在寻找更新 DateTime
对象的时间。我注意到有两种不同的方法可以创建具有更新时间的 DateTime
对象的副本,但我不确定使用哪种方法。
使用其中一个比另一个有优势吗?
import org.joda.time.DateTime;
DateTime oldTime = DateTime.now()
newTime = oldTime.withMinuteOfHour(30)
对比
import org.joda.time.DateTime;
DateTime oldTime = DateTime.now()
newTime = oldTime.minuteOfHour.setCopy(30)
它们可能大致相同 - 这是 withMinuteOfHour 的源代码 -
public DateTime withMinuteOfHour(int minute) {
return withMillis(getChronology().minuteOfHour().set(getMillis(), minute));
}
虽然 minuteOfHour 是 -
public Property minuteOfHour() {
return new Property(this, getChronology().minuteOfHour());
}
所以调用的核心都是一样的
谈论性能 - 我真的不太在意,因为这 3 行几乎永远不会成为您应用程序的瓶颈,除非您正在处理极端内存密集型应用程序,其中可能有一个额外的对象很重要。 (如你所知,我查看了源代码,发现第二种方法创建了一个额外的 Property
对象)
谈到可读性——当然我会选择第一个。因为我必须去 API 看看 setCopy()
做了什么。第一个清楚地表明了意图,它是请求一个新的 DateTime
对象,并将 minuteOfHour
设置为传递的值。
这是我不喜欢第二种方法的另一个原因。 minuteOfHour()
方法returns一个Property
:
Property minuteOfHour = date.minuteOfHour();
现在 属性 可以分配给 date
的任何 属性。我可以稍后做:
minuteOfHour = date.dayOfYear();
这会编译,但会更改变量的含义而不实际更改名称。这意味着,当您调用 Property#setCopy()
.