如何为用户传递TimeUnit
的类制作API,例如分钟,秒,小时和一个数字,并将Millisec值保留在班级内部。
以下似乎是唯一的方法?
void someMethodDays(int numOfDays) {
this.longValue = TimeUnit.DAYS.toMillis(numOfDays);
}
void someMethodHour(int numOfHours) {
this.longValue = TimeUnit.HOURS.toMillis(numOfDays);
} etc
这是唯一的方法吗?每个值都有一个描述性名称的方法?
最佳答案
您可以根据一个著名且经过测试的类java.time.LocalDate
来建模您的类,该类提供了plus(long, TemporalUnit)
方法。
同样,您可以创建一个someMethod(long, TimeUnit)
方法,该方法允许调用者传递任意数量的任何TimeUnit
。
void someMethod(long amount, TimeUnit unit) {
this.longValue = unit.toMillis(amount);
}
请注意,
LocalDate
还提供用于添加某些常见时间单位的专门方法,例如plusDays()
。这样,调用者就可以确定对于他们正在编写的代码,哪个更清晰:LocalDate tomorrow = today.plusDays(1);
LocalDate tomorrow = today.plus(1, TimeUnit.DAYS);