有人能解释一下Instant.getEpochSecond和Instant.toEpochMilli命名背后的理由吗?我能想到的唯一原因是瞬间的内部表示为相对于时代的秒和相对于该秒的纳米秒,而毫秒则是根据这两个值计算的。
但是,为什么要让这样的实现细节泄漏到新的API中呢?
发布于 2014-08-21 13:20:42
我不得不猜测,但我同意你的看法:
getEpochSecond()仅表示一个getter,即它只返回存储在该实例中的值。toEpochMilli()会计算它的返回值,就像toString()不会返回存储的字符串,但是每次调用该方法时都会在动态中进行内置。这个约定实际上是在这里记录的:http://docs.oracle.com/javase/tutorial/datetime/overview/naming.html
此约定的原因可能与JavaBeans规范有关,即epochSecond是Instant的(只读)属性,而epochMilli是不同的表示,而不是属性。
发布于 2014-08-21 13:25:35
getters返回Temporal对象的部分内容(如Instant),而to*方法返回该对象的转换版本:
getEpochSecond()返回从1970-01-01T00:00:00Z的Java时代获得的秒数。getNanos()返回Instant的纳秒秒部分。toEpochMilli()返回转换为毫秒的Instant (即seconds * 1000 + nanoseconds / 1,000,000)发布于 2014-08-21 13:22:47
方便吗?EpochSeconds用于UNIX兼容性,EpochMilli用于java兼容性,从我的头顶开始。
编辑:哦,我甚至不明白这个问题,这就是为什么一个是"get“,另一个是" to ":也许是为了提醒你第二个转换,可能会失败。
https://stackoverflow.com/questions/25427255
复制相似问题