【问题标题】:Method name conflict for getter getId()getter getId() 的方法名称冲突
【发布时间】:2014-07-30 05:10:59
【问题描述】:

我正在尝试实现一个 getter 方法来获取对象的 id:该方法应声明为“public int getId()”。

问题是对象类扩展了 Thread 类,它已经有一个“int getId()”方法。

当我尝试编译时出现此错误:返回类型与 Thread.getId() 不兼容。

有没有办法解决这个问题(可能带有某种注释)?

【问题讨论】:

  • 您应该更改方法的名称。您不想干扰 Thread 方法。
  • 你有一个扩展 Thread 的休眠模型类?这听起来像是一个不错的设计缺陷。模型类应该扩展的唯一类是抽象模型类。没有别的了。
  • @Tom:设计缺陷在哪里?请检查这个问题:您有什么意见吗? stackoverflow.com/questions/10616207/…
  • 对我来说,听起来他有一个由 hibernate 管理的模型类,它有一个用 @Id 注释的成员字段。这个类扩展了Thread,他现在尝试为那个导致他提到的错误的实体id创建一个getter方法。如果是这种情况他应该尝试拆分线程类和模型类。如果不是这种情况,那么请忽略我的评论:D。
  • 按照 Kayaman 的建议,impelemt Runnable 应该解决!

标签: java hibernate


【解决方案1】:

不,没有办法通过注释来解决这个问题。但幸运的是,有一种方法可以通过更好的设计来解决这个问题。

不要扩展Thread,而是实现Runnable

【讨论】:

  • @immibis 他可能想要Thread,但这几乎从来都不是必需品。
【解决方案2】:

调用其他方法,例如getObjectId(取决于对象是什么)。

为了保持一致性,请务必重命名设置器(例如,重命名为 setObjectId)。

【讨论】:

    猜你喜欢
    • 2018-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-10
    • 1970-01-01
    • 2012-02-05
    • 2019-02-27
    • 1970-01-01
    相关资源
    最近更新 更多