如何为用户传递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);

10-06 14:33