加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java Bean的一个很好的用例是什么?

发布时间:2020-12-15 04:27:41 所属栏目:Java 来源:网络整理
导读:我刚刚看到了 Java Beans规范.我觉得只使用getter,setter和空构造函数会使代码更加繁忙,而且开发人员需要管理track以正确设置所有必需的实例. 有人能指出一个使用这种设计的好用例吗?我无法理解它.我可以想到一个用途 – “当你需要创建一个类的实例,以便稍
我刚刚看到了 Java Beans规范.我觉得只使用getter,setter和空构造函数会使代码更加繁忙,而且开发人员需要管理track以正确设置所有必需的实例.

有人能指出一个使用这种设计的好用例吗?我无法理解它.我可以想到一个用途 – “当你需要创建一个类的实例,以便稍后在代码中决定它的数据成员.”

编辑:伙计们我不是在开始讨论.不想讨论优点/缺点.我不是在寻找像spring等当前的库,这使得它必须使用Beans.我正在寻找一个例子来了解Java bean带来的工程优势. “只是Java Beans设计可以帮助的一个例子”

解决方法

许多库和规范(例如JPA,JavaEL)使用Java Beans规范并完全依赖于该行为.

使用getter和setter的优点是可以在这些方法中添加代码,例如创建在运行时计算而不是存储在字段中的“虚拟”属性.

此外,使用getter和setter允许其他框架包装这些方法并提供其他功能,如更改日志记录等.在许多情况下,这是通过内部创建子类并覆盖getter和setter来完成的.用户不会注意到,因为“编织”或“代理”通常在运行时完成.例如,当您调用getter访问相关集合或实体时,Hibernate使用它来提供延迟加载功能.

更新:

根据请求,“虚拟”属性的示例:

假设您有一个Person bean,其字段为firstName和lastName.您可以通过提供以下getter来添加只读虚拟属性名称:

public String getName() {
  return getFirstName() + " " + getLastName();
}

更新2:

关于为何需要getter和setter的另一个注释:这主要来自Java的工作原理.直接支持属性的语言(如C#)允许您编写类似person.firstName =“Joe”的代码;并且如果有一个setter仍然使用setter,或者如果该属性是只读的则抛出错误.因此,如果你为firstName添加一个setter,那么这些语言会在内部将firstName =“Joe”转换为setFirstName(“Joe”),而开发人员不必改变任何东西 – 这是一个非常优雅的解决方案.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读