Как скрыть конструктор на записи Java, которая предлагает общественный статический метод фабрики?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как скрыть конструктор на записи Java, которая предлагает общественный статический метод фабрики?

Сообщение Anonymous »

У меня есть эта простая запись в Java (надуванный пример): < /p>

Код: Выделить всё

public record DatePair( LocalDate start , LocalDate end , long days ) {}
< /code>
Я хочу все три свойства (start
, end и days ), чтобы быть доступным для чтения, но я хочу третье свойство () автоматически рассчитываться, а не передавать во время экземпляра.

Код: Выделить всё

public record DatePair( LocalDate start , LocalDate end , long days )
{
public static DatePair of ( LocalDate start , LocalDate end )
{
return new DatePair ( start , end , ChronoUnit.DAYS.between ( start , end ) ) ;
}
}
Я хочу, чтобы только этот статический фабричный метод будет использоваться для экземпляра. Я хочу скрыть конструктор. Поэтому я явно пишу неявный конструктор и отмечаю его частным .

Код: Выделить всё

public record DatePair( LocalDate start , LocalDate end , long days )
{
private DatePair ( LocalDate start , LocalDate end , long days )  // 
Но отмечать этот подрядчик как частное < /code> приводит к ошибке компилятора: < /p>

java: неверный канонический конструктор в дате записи (попытка назначить привилегии с более сильным доступом; Запись, если компилятор запрещает его отмечать как частное 
?


Подробнее здесь: https://stackoverflow.com/questions/768 ... actory-met
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»