【问题标题】:Is it possible for a constructor to call itself?构造函数可以调用自己吗?
【发布时间】:2021-07-09 08:01:41
【问题描述】:

构造函数是否可以调用与其相关的类?例如(在下面的代码中)我正在尝试使用 ClockTimer 创建一个新时钟并调用具有 ClockTimer 参数类型的 AnalogClock 构造。它似乎不起作用,因为它给了我一个错误,但是在 ClockFrame 类中使用 ClockTimer 参数创建一个新的 AnalogClock 似乎可以工作。为了运行,我需要在 AnalogClock(在 ClockApp 中)解析什么?

【问题讨论】:

  • 如果 AnalogClock 依赖于 ClockTimer 而 ClockTimer 依赖于 AnalogClock 这意味着你有一个循环依赖。在 Java 中无法解决这种情况,因此您需要找到另一种方法来规避这种情况。
  • 它会给你什么错误?
  • @tgdavies 我认为很明显在声明之前使用了计时器,所以可能是未知符号计时器。
  • 您可以尝试在 AnalogClock 构造函数中创建 ClockTimer,时钟可以自行传递。
  • 您没有在ClockTimer 类中使用clockFrame,为什么不删除该字段?

标签: java object constructor


【解决方案1】:

从外面看,“analogClock”对象需要“timer”对象先存在,“timer”对象需要“analogClock”对象先存在。 实际上,认为“timer”对“analogClock”(“ClockTimer”中的“clockFrame”)没有任何作用,所以它实际上不需要它。

我建议如下:

  1. 删除“clockTimer”中的“clockFrame”参数和字段
  2. 首先创建“计时器”对象
  3. 第二次创建“analogClock”对象,并将“timer”传递给它

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多