我们在进行javaWeb变成的时候,在基础bean(持久化bean)里面的成员变量(属性值)一般都是用private修饰,然后提供get、set方法。我知道的这样的做法目的:1.易于封装,封装一些判断之类的。2.其他类不能直接得到,必须get、set得到或者修改值。我想问的是,如果一个类中的成员变量,不需要封装,就是按照数据库里面设置的类型传值,没有其他约束。这种情况下,我可不可以把成员变量,直接用private修饰,不提供get、set方法。要想得到类中的某个属性,就直接aa.name 、修改就是aa.name = dog ; (aa为类名)这样行不行。如果不行,能跟我讲一下弊端吗?
解决方案 »
- JTree节点渲染器的问题
- Jsmooth 的使用问题
- Java中日期的检错问题
- JComboBox的输入问题?
- applet中,重载了paint(),按钮啊什么的就不显示了
- 如何在JAVA中用类似C++中的System("...")?
- 能反编译CLASS成JAVA原代码吗?
- 关于多线程问题!是不是该这样该这样来写!
- 是不是所有的High-Level Input/Output Stream都可以任意的嵌套?详情请进
- client-server 的socket程序,刚开始运行正常,运行一段时间后出现connection reset by peer错误,如何解决??
- 问大家关于java的IO流这边的几个问题,希望能得到你们的答案,谢谢了!
- 为什么BufferedInputtream继承自过滤字节流,而BufferedReader却并非继承自过滤字符流呢?
2.你所描述的基础bean一般都是数据对象,在web应用中肯定不是单例存在的,不同应用线程使用的对象肯定不同,不同用其他的处理数据对象。如果用类名.变量名进行赋值或取值,那么在并发时,多个线程访问时会共享出错。
public class TestBean {
public final int age; public TestBean() {
age = 20;
}
}
public class TestBean {
public final int age; public TestBean() {
age = 20;
}
}
应该是构造函数里面赋值
public class TestBean {
public final int age; public TestBean(int age) {
this.age = age;
}
}
很多框架都是调用这两个方法来实现沟通,这是一种习惯了。
get/set方法也不一定只是简单的作一个赋值,或一个返回值吧,在这里可以作一些权限的控制,比如不是每个角色都可以赋值的。再比如返回的值不一定是值本身,可以是经过处理了的,比如加密,这用public定义是不能作到的。