我们在进行javaWeb变成的时候,在基础bean(持久化bean)里面的成员变量(属性值)一般都是用private修饰,然后提供get、set方法。我知道的这样的做法目的:1.易于封装,封装一些判断之类的。2.其他类不能直接得到,必须get、set得到或者修改值。我想问的是,如果一个类中的成员变量,不需要封装,就是按照数据库里面设置的类型传值,没有其他约束。这种情况下,我可不可以把成员变量,直接用private修饰,不提供get、set方法。要想得到类中的某个属性,就直接aa.name 、修改就是aa.name = dog ; (aa为类名)这样行不行。如果不行,能跟我讲一下弊端吗?
解决方案 »
- 能不能用反射来获取局部变量
- 我刚开始学习JavaSE遇到了一个字符串的问题,实在是不晓得怎么解决了,希望哪个前辈高手能帮小弟解决下,不胜感激!
- 请问在applet中用哪种弹出窗口可以在上面加JLable等组件?
- java动态代理类加载器 作用 限制 要求
- 关于SimpleDateFormat转换时间的问题
- 还是SDK安装问题:这1.4.2的安装一般要用多长时间?
- 下一步该怎样走???
- 关于内部类的问题
- 请问Debug是一个什么概念呢?为什么很多编译器都有呢?
- 请问大家我想学java,有什么好的书吗?(有c基础)
- 问大家关于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定义是不能作到的。