Java。如何使用私有构造函数覆盖 class 中的方法

Java. How to override method in class with private constructor

我想覆盖 class LocalDate 的 toString() 方法。我知道如何使用 public 构造函数覆盖 class 的 toString() 方法,例如 java.util.Date 使用如下代码:

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

但是我不能用 class 做同样的事情,因为 class 有像 java.time.LocalDate 这样的私有构造函数 有什么办法可以解决这个问题吗?

简单的回答是:你不能。

那个 class javadoc 告诉你:

public final class LocalDate

您不能扩展最终的 class,因此您不能更改其任何方法的行为,至少不能在 Java 中更改。 (Kotlin 提供 ,允许你做 "sort of" 那件事)。

但正如评论中指出的那样,假设您的问题是正确格式化 Date、LocalDate...实例,然后 overriding toString() 完全是错误的做法。您可以使用 DateFormatter 将日期对象转换为格式化的日期字符串,请参阅 获取指导。

我们不能覆盖最终 class 的方法。