Bean这个规范的一个牢骚,大家给个答复 bean里面getter和setter一说,我就一直没搞明白到底有什么用。又要数据隐藏,又要去操作它(那你还隐藏它干什么)。这不是多此一举么。直接public属性不就行了。如果说它为IDE方便,那我就觉得这成了悲哀啦。考虑可能不成熟,可能是我还没有领悟到大师们的真正境界吧。不才大家发发意见。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你还不明白private型数据的优点。 就是说外部的其它代码不能直接操作这个变量,只能通过gettter、setter方法访问,所有外部代码对类变量的操作都被限定在setter、getter方法中了。主要就是这方面的意义。在开发中慢慢体会其中的含义吧 隐藏是对外隐藏,如果bean中的 属性不是private,那么外界就可以操作它。这样做的原因,是使bean具有独立性,我的东西,只能通过我提供的方式来访问。一定程度上,可使代码具有规范性。否则,可能百花齐放了。 chszs(老刀) private 根本就是隐藏数据么。还有什么? 那你隐藏了数据有要操作他非要搞个get 和 set 我就觉得这里别扭。imA(男的不会,会的不男) 这是结果,我想知道这么做的原因是什么。另外在这么做更能体现(更像)面向对象的做法,我能理解到这一步,但是我总是觉得麻烦。 如imA(男的不会,会的不男) 所说还可以在getter,setter里对数据做一些处理 给你点代码看看: private String searchtype = "all"; public String getSearchtype() { return searchtype; } public void setSearchtype(String searchtype) {//只允许三种查询模式 if ("all".equals(searchtype) || "title".equals(searchtype) || "message".equals(searchtype)) { this.searchtype = searchtype; } 对于变量安全很重要 而且楼主如果你用JSF就知道了 除非你需要特定赋值 否则的话都不会去使用set和get方法 JSF会自动调用 CrazyGou(阿狗)(...) 和pigo() 也有点一定道理jsf我正在研究 我转不过弯来的地方就在于 这种写法单单是为了迎合应用么 简单的说,get和set方法里面可以不只有一句话,可以包括空指针处理、异常处理、逻辑判断等功能,仅仅一个属性肯定是做不到的。从功能上看,函数是类提供给外界的接口,外界通过函数来操作对象,也就是说,这个类提供什么样的函数,外界最多就只能完成什么样的操作。如果一个private的属性只提供get而没有set,你就只能读。 我是这么理解的。get和set方法可以封装一些对对象的公共操作。比如我有一个aaa的密码,放到数据库里面希望加密,就可以把加密方法写在set里面,把解密方法写在get里面,而不是每次操作密码字段都要去加密和解密处理。 to njqibin(杉树林):第一次在Java区见到你 :) 举个例子如果不set,getpublic List a;然后某地方调用:a.add之类,可能会空指针异常而如果private List a;public List getA(){ if(a==null) return new ArrayList();}这样getA().add();就不会报异常了 楼上的说得都很有道理,我就很喜欢这setter 和 getter,呵呵 ==============================brooksychen(初晨之阳)简单的说,get和set方法里面可以不只有一句话,可以包括空指针处理、异常处理、逻辑判断等功能,仅仅一个属性肯定是做不到的。从功能上看,函数是类提供给外界的接口,外界通过函数来操作对象,也就是说,这个类提供什么样的函数,外界最多就只能完成什么样的操作。如果一个private的属性只提供get而没有set,你就只能读。===============================我也有楼主的疑惑,如果非要有个理由,目前的理解也就和brooksychen差不多了。 bean里属性私有 get set方法公有就是向外面的声明:我的地盘我做主,想用我的属性,就要用我提供的方法.属性公有很容易出bug的 某一个时间执行一个线程? 如何实现类似于QQ的好友面板跟群面板的切换 用java写ultraedit 最近想做个游戏,谁能指点下如何处理键盘事件的问题,谢谢了!(使用全部家当啦~) 如何保证弹出的对话框不失去焦点? invalid horizontalScrollBarPolicy是怎么回事啊?在线急! 请高手Swing看一下 linux 下的 rmi 服务突然停止了。。。 Exception occurred during event dispatching违例该怎么处理呀? 关于gc回收的一点问题 java如何跳过第一行而从第二行开始读? 各位帮组下小妹。。散分 咯
这样做的原因,是使bean具有独立性,我的东西,只能通过我提供的方式来
访问。一定程度上,可使代码具有规范性。否则,可能百花齐放了。
另外在这么做更能体现(更像)面向对象的做法,我能理解到这一步,但是我总是觉得麻烦。
还可以在getter,setter里对数据做一些处理
private String searchtype = "all"; public String getSearchtype() {
return searchtype;
} public void setSearchtype(String searchtype) {//只允许三种查询模式
if ("all".equals(searchtype) || "title".equals(searchtype) ||
"message".equals(searchtype)) {
this.searchtype = searchtype;
}
jsf我正在研究 我转不过弯来的地方就在于 这种写法单单是为了迎合应用么
get和set方法可以封装一些对对象的公共操作。比如我有一个aaa的密码,放到数据库里面希望加密,就可以把加密方法写在set里面,把解密方法写在get里面,而不是每次操作密码字段都要去加密和解密处理。
如果不set,get
public List a;
然后某地方调用:
a.add之类,可能会空指针异常
而如果
private List a;
public List getA(){
if(a==null)
return new ArrayList();
}
这样getA().add();就不会报异常了
brooksychen(初晨之阳)简单的说,get和set方法里面可以不只有一句话,可以包括空指针处理、异常处理、逻辑判断等功能,仅仅一个属性肯定是做不到的。从功能上看,函数是类提供给外界的接口,外界通过函数来操作对象,也就是说,这个类提供什么样的函数,外界最多就只能完成什么样的操作。如果一个private的属性只提供get而没有set,你就只能读。
===============================我也有楼主的疑惑,如果非要有个理由,目前的理解也就和brooksychen差不多了。