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

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日

悬赏问题

  • ¥170 如图所示配置eNSP
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥15 键盘指令混乱情况下的启动盘系统重装