【问题标题】:Java. How to override method in class with private constructor爪哇。如何使用私有构造函数覆盖类中的方法
【发布时间】:2019-04-17 14:01:58
【问题描述】:

我想重写类 LocalDate 的 toString() 方法。我知道如何使用像 java.util.Date 这样的代码来覆盖类的 toString() 方法:

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

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

【问题讨论】:

  • 不,你不能那样做。 LocalDate 类是最终类,这意味着您不能创建任何子类。这也是获得你想要的东西的错误方式。要将LocalDate 格式化为您喜欢的字符串,请使用适当的DateTimeFormatter
  • 感谢回归!

标签: java constructor overriding private tostring


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    简单的答案是:你不能。

    那个类 javadoc 告诉你:

    公共 final 类 LocalDate

    你不能扩展最终类,因此你不能改变它的任何方法的行为,至少在 Java 中是这样。 (Kotlin 提供extension methods,允许你做“某种”事情)。

    但正如 cmets 中所指出的,假设您的问题是正确格式化 Date、LocalDate、... 实例,那么 覆盖 toString() 很简单错误的方法。您可以使用 DateFormatter 将日期对象转换为格式化的日期字符串,请参阅 here 以获取指导。

    【讨论】:

      猜你喜欢
      • 2011-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-22
      • 2016-02-27
      • 2017-05-03
      • 2013-03-01
      • 2021-10-16
      相关资源
      最近更新 更多