【问题标题】:Why are object properties specified outside of constructor in java? [closed]为什么在java中的构造函数之外指定对象属性? [关闭]
【发布时间】:2014-12-08 10:42:37
【问题描述】:

为什么在java的构造函数之外指定对象属性?在构造函数内部指定属性不是更方便吗?

【问题讨论】:

  • 这个问题似乎离题了,因为语言设计问题最好向语言的设计者提出。一个单一的、非意见的答案只能从他们那里得到(如果那样的话)。
  • 我不明白你的建议会如何工作,因为它违反了所有的范围规则,所以答案很可能是否定的,根本不是。例如,编译器如何区分字段和局部变量?

标签: java oop constructor


【解决方案1】:

它与可见性有关。属性在构造函数之外声明,因此它们可以在类中可见。但它们是在构造函数内部初始化的。

【讨论】:

    【解决方案2】:

    在构造函数之外声明的属性成为该类的instance variables,它们可以有自己的对象值,并且可以在类中的任何地方使用。

    在构造函数中声明的属性不会是类的属性,它们只是local variables,只能在构造函数中使用。

    更多的是可用性而不是便利性。

    【讨论】:

      【解决方案3】:

      当类具有默认构造函数和一组三元组:属性、设置器和获取器时,我认为您是在询问 bean 约定。

      这种范式是几年前发明的。它的优点是能够通过反射使用一种通用方式初始化对象。例如,动态地将 XML 标记或 JSON 属性映射到 java bean 属性。

      但这不是唯一的设计范式。您可以通过构造函数设置所有数据。此外,在这种情况下,您可以使您的类 不可变 在多线程环境中为您提供很多优势。

      但是当类有很多属性时,使用基于构造函数的初始化不是很方便。特别是如果其中一些具有默认值。 构建器模式可以帮助解决这个问题。

      请随时提出更具体的问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-04-02
        • 1970-01-01
        • 2018-06-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-26
        • 2021-09-03
        相关资源
        最近更新 更多