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

lombok - JavaBean的意义何在?

茅和玉
2024-01-29

JavaBean的意义何在?
JavaBean中将属性定义为私有,转而提供getter、setter。这有什么意义?

为什么不直接将属性设为public?getter、setter和公共属性有什么区别(除了能在里面干点别的)?甚至像Lombok那样的,新人表示困惑,望大佬指点,谢谢!

共有3个答案

毕浩渺
2024-01-29
JavaBean中将属性定义为私有,转而提供getter、setter。这有什么意义?
  • 意义其一在于实现面向对象的特性之一封装,对于一个类来说,要做的就是统一管理某些状态,涉及内部实现细节的属性或者说成员都需要私有化,即使需要修改,也必须通过类上的方法去修改,这才能叫管理,如果全部是 public, 拿到类实例就能随便改那管理了个毛线。举个实际点的例子,大型项目上排查问题经常需要定位哪里修改了某个状态,这个时候作为这个类来说,它是一问三不知的,那你作为开发者就能去搜代码,看哪些地方访问了这个属性,能找得你头皮发麻,但有了 getter/setter, 外部对类上属性的访问和修改对于类来说才是可感知的,你只需要在 getter/setter中打断点,跟下调用栈直接就能定位到问题点所在
  • 其二, 遵循开闭原则,对扩展开放,对修改关闭。对于外部来说,你不能直接修改类中的私有成员,这是体现的对修改关闭;提供一个 setter 来让外部修改私有成员的值,这体现的是对扩展开放。这里注意理解,本来外部不能修改,但你提供了一个方法让外部可以改,这就是一种扩展支持
  • 其三,你能直接改我让你能改 完全是两个层面的事情,这里面涉及到一个叫权限控制的概念
魏浩广
2024-01-29

groovy解决你所有烦恼,什么Lombok在groovy面前简直弱爆了

戚建德
2024-01-29

Lombok 只是简化了 JavaBean 类的创建,自动生成了 getter, setter与 toString, 省了许多事, 比如极端情况: 一个类有几十个属性, 那就要一百多个方法

将属性设为私有并提供 getter 和 setter 的意义在于:

  • 可以隐藏属性的具体实现细节,防止外部直接访问或修改属性,安全。
  • 通过 getter 和 setter 可以在设置和获取属性值时进行一些额外的逻辑判断或处理,如范围检查、触发事件等。
 类似资料:
  • 问题内容: 我已经和Lombok一起使用并积极使用了2个月。使用Java时,我会更加熟悉。但是,我第一次遇到了该语言的以下语法结构: 这是什么意思,如何编译? 问题答案: 这是一种实验性的Lombok语法,其创建目的是在引用多个注释时支持间接层,而不是使用。 语法有点奇怪;要使用这3种功能中的任何一种,您必须在中包装要应用于构造函数/方法/参数的注释。要应用多个注释,请使用。注释本身显然也可以具有

  • 主要内容:JavaBean示例,JavaBean属性JavaBean 是可以重复使用的一个组件,是遵守 JavaBean API 规范的 Java 类。 一般情况下,JavaBean 要满足以下要求: JavaBean 是一个公共类,并提供无参公有的构造方法 需要被序列化并且实现了 Serializable 接口 属性私有化 具有公共的访问属性的 getter 和 setter 方法 Java 之父 James Gosling 在设计 Java 语

  • JavaBean是特殊的Java类,使用J ava语言书写,并且遵守JavaBean API规范。 接下来给出的是JavaBean与其它Java类相比而言独一无二的特征: 提供一个默认的无参构造函数。 需要被序列化并且实现了Serializable接口。 可能有一系列可读写属性。 可能有一系列的"getter"或"setter"方法。 JavaBean属性 一个JavaBean对象的属性应该是可访

  • 下面是Lombok的注释的java文档: 如果加上一个参数,lombok将在方法/构造函数主体的开头插入一个空检查,抛出一个{@code NullPointerException},参数名作为消息。如果放在字段上,任何为该字段赋值的生成方法也将生成这些空检查。请注意,任何名为{@code NonNull}且带有任何大小写和任何包的注释都将导致为生成的方法生成nullchecks(并且注释将被复制到

  • 有没有办法为自定义生成的代码? 考虑以下简单类: 我希望Lombok为生成Setter,就像我在上面的示例中实现的那样。这应该只在用注释的类和作为的属性上完成。其他属性的Setter,在本例中应该像往常一样生成。 是否有办法根据这些标准定制Setter代码的生成?

  • 我有一个.jrxml文件,我想将代码中的一些参数传递给它。我有一个<code>Orde</code>r类,它具有<code>双倍价格</code<、<code>int quantity</code〕和<code>Product Product</code’等字段。情况很简单,当我需要传递价格或数量时,我只需要这样做: 当我尝试传递 时出现问题。我尝试了类似的东西: 还有许多其他的,但我一直得到错误