日期:2014-05-20  浏览次数:20830 次

java项目中,哪些变量必须写set、get方法,哪些变量只需要在某个方法里定义为局部变量?
比如说:
public class ResetBean {
private List<Integer> roleIdList ;
public String logout() {
Tools.getSession().invalidate();
return "login_failure";
}
public String navigatTo() {
String forwardUrl = (String) Tools.getRequest().getParameter("navigation");
try {
roleIdList = (List<Integer>)userService.findRoleByPermission(forwardUrl).getDataObject();
} catch (Exception e) {
e.printStackTrace();
}
public List<Integer> getRoleIdList() {
return roleIdList;
}

public void setRoleIdList(List<Integer> roleIdList) {
this.roleIdList = roleIdList;
}
}
roleIdList 调用userService里面的方面,如果我写成下面的得不到值,而上面的先定义私有变量,再写get、set方法就能得到值呢??:
List<Integer> roleIdList = (List<Integer>)userService.findRoleByPermission(forwardUrl).getDataObject();
上面的roleIdList 为什么我在navigatTo方法里定义局部变量不行,得不到值?
------最佳解决方案--------------------
这个问题是为了保证对象属性的安全,一般把对象的属性设为私有的,而get/set方法是用来获取/设置属性的(并不是唯一的,可以自己定义方法完成类似的工作,但是get/set是习惯,而且框架调用属性的时候也是用get/set)
第二个问题我的想法是roledList是ResetBean的属性,因为ResetBean没有实例化,所以它的属性应该为空.
------其他解决方案--------------------
List<Integer> roleIdList = (List<Integer>)userService.findRoleByPermission(forwardUrl).getDataObject();
上面的roleIdList 为什么我在navigatTo方法里定义局部变量不行,得不到值?

如果你把他定义成局部变量了,只能在这个对应的方法里面使用,其他方法,或者业务无法使用,这种全局的list一般是业务逻辑之后,要显示给前台页面做展现,比如用struts,action里面的属性,set,get方法之后,在jsp页面,struts标签,更加名称就可以获取对应的值!