LDG1998 2021-09-08 16:15 采纳率: 50%
浏览 226
已结题

java类里面的变量通过set方法赋值和通过this.对象赋值有什么区别吗?

在看以前写过的代码的时候遇到一些疑惑。
在一个方法中,需要对一个变量

 List<Object> field1 = new ArrayList<Object>();

进行赋值,代码使用的是 this.field1.add(xxx) ;
而在对这个变量 field1 进行判断的时候,才会用get方法获取变量进行判断。
如下:

this.field1.add(xxx);
if(getField1() != null){
  this.field1.addAll(xxx);
}

我在想是为啥不使用get方法获取变量再使用add 如: getField1().add(xxx)
我想从可读性和两者的区别听听大家的见解。

  • 写回答

4条回答 默认 最新

  • 於黾 2021-09-08 16:22
    关注

    你要用get方法,一定是想在类的外部去取值的时候才这么用,避免一个只读的属性被错误的赋值,或者一个不可修改的值被错误的改变
    在类内部,都是写这个类的人自己实现的,没必要多此一举还去调用属性
    通过set方法赋值也一样,比如你有个窗体,可以动态的改变宽和高,那么你暴露出来的size属性变化的时候你要去改变窗体本身的size属性。这样既可以保证数据必须按照你规定的方法赋值,也可以保证当数值被改变的时候你是可以处理的,而如果把内部变量直接交给外面随便修改就达不到这种效果。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 9月8日
  • 已采纳回答 9月8日
  • 创建了问题 9月8日