Instant.getEpochSecond vs Instant.toEpochMilli 背后的基本原理 [已关闭]
有人能解释一下Instant.getEpochSecond与Instant.toEpochMilli命名背后的原因吗?我能想到的唯一原因是,一个瞬间的内部表示为相对于纪元的秒和相对于该秒的纳秒,而毫秒是根据这两个值计算的。
但是,为什么会让这样的实现细节泄漏到新的API中呢?
有人能解释一下Instant.getEpochSecond与Instant.toEpochMilli命名背后的原因吗?我能想到的唯一原因是,一个瞬间的内部表示为相对于纪元的秒和相对于该秒的纳秒,而毫秒是根据这两个值计算的。
但是,为什么会让这样的实现细节泄漏到新的API中呢?
我不得不猜测,但我同意你的看法:
getEpochSecond()
表示仅仅是一个 getter,即它只是返回存储在该实例中的值toEpochMilli()
另一方面,将计算其返回值,就像不会返回存储的字符串,而是在每次调用该方法时动态构建一样。toString()
该公约实际上记录在这里:http://docs.oracle.com/javase/tutorial/datetime/overview/naming.html
此约定的原因可能与 JavaBeans 规范有关,即 将是 (只读) 属性,而 是不同的表示形式,但不是属性。epochSecond
Instant
epochMilli
getter 返回对象的各个部分(如 ),而方法返回该对象的转换版本:Temporal
Instant
to*
getEpochSecond()
返回 从 Java 纪元 1970-01-01T00:00:00Z 获取秒数。getNanos()
返回Instant
toEpochMilli()
返回转换为毫秒的(即Instant
seconds * 1000 + nanoseconds / 1,000,000
)