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

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

Сообщение Anonymous »

У меня есть простая запись на Java (надуманный пример):

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

public record DatePair( LocalDate start , LocalDate end , long days ) {}
Мне нужны все три свойства (, end и дни) должны быть общедоступны для чтения, но мне нужно третье свойство () автоматически вычисляется, а не передается во время создания экземпляра.
Поэтому я добавляю статический фабричный метод:

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

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 )  //  

Подробнее здесь: [url]https://stackoverflow.com/questions/76843519/how-to-hide-constructor-on-a-java-record-that-offers-a-public-static-factory-met[/url]

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