java中bean为什么要get、set那么麻烦?不可以用一种机制省略吗?

在java中,看bean中的代码就是声明一下变量,然后一堆set、get语句,我觉得光声明就够了,那堆set get语句既然都有,就默认得了,不必写了,为什么java设计得这么啰嗦?
我想了解一下为什么这么啰嗦?如果都有get\set,java封装为内建的方法不就行了?
原因我想是否get\set显式的定义可以在里面写其它代码?或者可以决定提供哪些变量的get\set而不提供哪些?
我觉得即使有上述原因,也可以隐式的定义,而需要时再用显式的方法定义覆盖它,使代码更简洁.谁能解释这个问题?

huchunlong :封装和转码都是SUN公司来做,不需要我考虑吧,我只是想声明了变量的bean,直接使用set和get方法,而不必显示声明

qbqopen :虽然是大师说的,但我还不明白原理.既然"访问式/变异式"是最进步的方式,为什么不直接隐式定义,省略这些代码?

目前,没有机制可以省略getter和setter。这是JavaBean规范决定的,必须遵循它。以下是规范中的一节:

持有值应该通过一组存取方法(getXxx和setXxx)来访问
对于您需要的每个特性,您应该有一个带有匹配公用getter 和setter 方法的专用实例变量。

只有遵循这个规范,别的程序才可以通过反射机制来调用你的JavaBean。如果你觉得写的烦,可以通过IDE的工具自动生成。

关于更详细的东西可以参见:http://java.sun.com/products/javabeans/
温馨提示:答案为网友推荐,仅供参考
第1个回答  2007-10-14
get,set是为了保持封装,为了数据操作的安全性与合法性,或者你现在听不懂什么意思。解决办法:
使用Eclipse,声明完属性后后
右键->Source->Generate Getters and Setters
能自动填充get/set,非常方便
第2个回答  2015-11-05

首先它是一种编码习惯、这种习惯对封装有很好的诠释。

没错你的代码完全可以写成

public String str;
pubilc int i;

function() {
    obj.str = "str";
    obj.i = 1;
}

如果你觉得get、set没有意义,完全可以省略掉的。

第3个回答  2007-10-14
怕麻烦就用自动生成啊。ECLIPSE支持自动生成getter和setter方法。

JavaBean就像是一个容器,里面都是这样的方法。看着烦,用起来很方便的。你如果有用HIBERNATE的话就能体会到。
第4个回答  2007-10-16
照你的意思,那干脆把所有变量都申明为public得了。
用GET/SET的话比较灵活,因为有些属性我们只需要SET,有些只需要GET,安全性比较好。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网