我想重写LocalDate类的toString()方法。我知道如何使用类似以下代码的公共构造函数(如java.util.Date)覆盖类的toString()方法:

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


但是我不能对具有私有构造函数(如java.time.LocalDate)的类做同样的事情
有什么办法可以解决这个问题?

最佳答案

简单的答案是:您不能。

该类javadoc告诉您:


  公共最后一堂课LocalDate


您不能扩展最终类,因此不能更改其任何方法的行为,至少不能在Java中更改。 (Kotlin提供了extension methods,可让您“完成”该类工作)。

但是正如注释中指出的那样,假设您的问题是正确格式化Date,LocalDate,...实例的格式,那么覆盖toString()完全是错误的方法。您可以使用DateFormatter将日期对象转换为格式化的日期字符串,有关指导,请参见here

10-07 19:31
查看更多