Конструктор для Instant класса в Java? - PullRequest
0 голосов
/ 01 июня 2018

Я знаю, что могу создать объект Instant следующим образом:

Instant instant = Instant.now();

И я не понимаю, почему я не могу создать объект Instant, подобный этому:

Instant instant1 = new Instant();

Я не могу найти информацию о конструкторах Instant, и я знаю, что Instant не является интерфейсом или абстрактным классом.Почему я не могу создать объект Instant?

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 01 июня 2018

Поскольку конструктор приват .Не забывайте, что существуют реализации Java с открытым исходным кодом, и вы можете просто посмотреть на их реализации для таких вопросов:

/**
 * 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;
}
0 голосов
/ 01 июня 2018

Исходный код Instant объявляет конструктор private, принимающий 2 аргумента, что предотвращает автоматическую генерацию конструктора no-arg.Это сделано специально: авторы исходного кода Instant хотели запретить пользователям использовать конструктор, потому что они хотели заставить пользователей использовать Instant.now().

...