如果我的时间单位是秒类型,并且在86400/20 = 4320个周期后周期持续时间是20秒,则通过24小时。
long numberOfCyclesToReach24Hours(long cycleDuration, TimeUnit unit) {
// if I knew that unit is of type seconds I could
return TimeUnit.HOURS.toSeconds(24) / cycleDuration
// but if it is of type MILLISECONDS for example I have to
//return TimeUnit.HOURS.toMillis(24) / cycleDuration
}
这个问题是否有一个优雅的解决方案,或者我真的必须切换所有类型的案例?我知道这种情况不会经常发生,但如果将来引入新的TimeUnit
类型,则必须对代码进行调整:)
我还在考虑使用TimeUnit.values
方法并依赖返回类型的顺序,并通过检查输入单元的位置来了解哪个常量(1000L,60L等)我可以在没有任何toSeconds
,toMillis
等方法的情况下自行计算周期数,但这更加丑陋而且非常奇怪:)
答案 0 :(得分:3)