Джава. Как переопределить метод в классе с помощью частного конструктора - PullRequest
0 голосов
/ 14 ноября 2018

Я хочу переопределить метод toString () класса LocalDate.Я знаю, как переопределить метод класса toString () с помощью открытого конструктора, например java.util.Date , используя такой код:

Date date = new Date () {
   @override
   public String toString() {...}
}

Но я не могу сделать то же самое с классом, которыйесть личный конструктор, такой как java.time.LocalDate Есть ли способ, как я могу обойти это?

Ответы [ 2 ]

0 голосов
/ 14 ноября 2018

Мы не можем переопределить методы финального класса.

0 голосов
/ 14 ноября 2018

Простой ответ: вы не можете.

Этот класс javadoc говорит вам:

public final class LocalDate

Вы не можете расширять конечный класс, поэтому вы не можете изменить поведение любого из его методов, по крайней мере, в Java.(Kotlin предлагает методы расширения , которые позволяют вам делать "что-то подобное").

Но, как указано в комментариях, при условии , что ваша проблема состоит в том, чтобы правильно отформатировать экземпляр Date, LocalDate, ..., затем , переопределяющий toString(),просто неправильный подход.Вы превращаете объекты даты в форматированные строки даты, используя DateFormatter, см. здесь для получения рекомендаций.

...