我知道我可以用这种方式创建一个Instant对象:
Instant instant = Instant.now();
我不明白为什么我不能创建这样的Instant对象:
Instant instant1 = new Instant();
我找不到关于Instant构造函数的任何信息,我知道Instant不是接口或抽象类。为什么我无法创建Instant对象?
提前致谢!
答案 0 :(得分:3)
Instant
源代码声明了一个带有2个参数的private
构造函数,这会阻止自动生成no-arg构造函数。这是设计原因:Instant
源代码的作者希望阻止用户使用构造函数,因为他们希望强制用户使用Instant.now()
。
答案 1 :(得分:2)
因为构造函数是私有。不要忘记有Java的开源实现,你只需查看他们的implementations来解决这些问题:
/**
* Constructs an instance of {@code Instant} using seconds from the epoch of
* 1970-01-01T00:00:00Z and nanosecond fraction of second.
*
* @param epochSecond the number of seconds from 1970-01-01T00:00:00Z
* @param nanos the nanoseconds within the second, must be positive
*/
private Instant(long epochSecond, int nanos) {
super();
this.seconds = epochSecond;
this.nanos = nanos;
}