Как скрыть конструктор на записи 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

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