【问题标题】:Why/how do objects not have an init method?为什么/如何对象没有 init 方法?
【发布时间】:2012-09-01 02:00:48
【问题描述】:

这可能是一个简单的 OOP 问题,我是 Java 新手,所以我想知道为什么对象没有 init 方法,如果对象没有,那么它在哪里使用以及为什么?

【问题讨论】:

  • 他们有一个构造函数。这是一个家庭作业问题吗?你说它像一个。
  • 您需要改进提问的方式才能获得帮助。尝试阅读stackoverflow.com/faq
  • 它来自一个家庭作业问题,所以我已经知道答案,我只是想知道为什么/如何更好地理解这个概念。
  • @user1629075 - 这不是重点。弗朗西斯科不是在谈论你问什么,或者你为什么问。他在谈论你是如何写这个问题的。 (首先,它只是勉强可以理解。)
  • 我回复的是 Michael Berkowski,而不是 Francisco。至于弗朗西斯科的评论,我将利用给出的链接来了解如何更好地提问。

标签: java object methods init


【解决方案1】:

在 Java 中,您有构造函数来初始化实例。如果您正在创建一个框架,那么为现有实例引入您自己的类似 init 的方法(构建后)并不是一个糟糕的模式,因为有更安全的方法可以在构建后而不是在构建期间访问成员。

【讨论】:

  • init() 方法是一种可怕的反模式!
  • init() 方法不一定是反模式,如果别无选择,只能在构造函数之外处理初始化异常,这有时会发生。适当控制和处理中层并不是一件坏事。我宁愿在尝试构造所有成员对象时验证对象的正确构造,而不是依赖未初始化或半初始化的成员对象。给一个简单的班级,有本地人和无风险的成员,我自然不会这样做,但有时不会按计划进行。
  • 其实如果init()需要启动一个线程或者发布this到另一个线程,那么这不仅仅是一个好的模式,它是必需的。你不应该将this 从构造函数泄漏到另一个线程。
【解决方案2】:

对象具有初始化它的构造函数。虽然没有初始化方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-06
    • 1970-01-01
    • 1970-01-01
    • 2015-05-29
    • 2012-02-23
    • 2019-01-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多