当前位置: 首页 > 知识库问答 >
问题:

在Java中,除了getter和setter方法,还有更好的选择吗?

夹谷成龙
2023-03-14

有人有更好的主意吗?

共有1个答案

岑和风
2023-03-14

是的-试着设计你的类,这样你就不会有getter和setter了。通常,在所有字段上设置getter和setter是一个糟糕的设计,因为它破坏了封装。Java bean是一个例外(您有一个模型类/DTO或一些映射到XML/JSON的类);在这里,您不应该介意它们,因为setter和getter是唯一的方法。

在具有逻辑的类中,通过构造函数注入依赖项,或者如果使用Spring/CDI并且喜欢的话,直接注入依赖项。这更安全,因为您不会有不一致状态的对象;例如,您创建了一个对象,但忘记调用setter->NullPointerException。但是通过使用构造函数,可以避免忘记调用setter的情况。

当然,可能会有例外,比如在设置一些可选字段时,您不希望所有依赖项都在构造函数中。但是,可以通过重载构造函数来解决这个问题,或者如果情况更复杂,可以通过使用builder模式以更优雅的方式来解决这个问题。

 类似资料:
  • 问题内容: 我看到成员变量被赋予了私有修饰符,然后使用getter / setter方法只是为了设置和获取变量的值(以标准化的名义)。 然后为什么不将变量本身公开(除了像spring框架这样的案例,该案例依赖于IOC的getter / setter方法)。它达到目的。 在C#中,我看到成员变量的大小写为getter / setter。为什么不将变量本身公开? 问题答案: 为了从一开始就获得 稳定的

  • 问题内容: 始终建议使用getter / setter访问私有变量。为什么最好将它们声明为public并对其进行访问。无论如何,我们正在使用getter和setter访问它? 问题答案: @mre的回答非常好,您的问题很重要。总结一下:您将对象的字段设置为私有,以控制其他对象使用它的方式。您的对象使用setter来: 限制和验证传递给设置器的数据 隐藏其内部数据结构(服务对其他对象感兴趣,而不是服

  • Kotlin自动生成它的getters和settings,但是我从来没有引用过它们?另外,用Kotlin编写自定义getter/setter的正确方法是什么?当我说< code>myObj.myVar = 99时,我感觉< code>myVar是我正在直接访问的< code>myObj的公共字段。这里到底发生了什么?

  • 假设我有一个类Things,它包含许多不同的实例变量。我为它们分别创建了单独的setter和getter方法。如果我想创建另一个存储things'class'的class2,那么为things类中的实例变量创建额外的setter和getter方法是很好的编码方法。另外,假设我有另一个使用class2的class3,那么重复setter和getter方法会产生高耦合吗?

  • 最近,我在一门计算机科学课程上做了一个作业,要创建一个包含两个对象的类。 教授通过电子邮件批评如下:“构造函数、getter和setter中的sysout应该是主要方法。” 他英语说得不太好,所以这没什么帮助。有人知道关于我的代码他到底在说什么吗?这是我提交的代码: 是否必须将getter/setter放在main方法中?如果我这样做,代码实际上不会运行。

  • 菜单栏: Code —> Generate —> Getter and Setter Mac: command + N Windows\/Linux: Alt + Insert —> Getter and Setter