Java 对象里为什么要用 get set?

2022 年 8 月 11 日
 dxatgp02

int max = obj.getMax();

int max = obj.max;

第二种写法不是更简单,更好理解?

19362 次点击
所在节点    Java
185 条回复
zagfai
2023 年 3 月 16 日
@devswork 成千上万个类严格意义上是一坨屎山代码吧,可维护性理论上是很有问题的,所有人都不太会愿意去碰。
devswork
2023 年 3 月 16 日
@zagfai #181 按照你的说法,那基本上有点规模的项目,都是屎山。所有类的数据校验交给调用方,一个 gender 只要调用方使用,就自己写一遍 if 判断,就算几十个类,也都背下来。这么做也完全 OK 。
zagfai
2023 年 3 月 16 日
@devswork 数据校验是一码事,这个在对外暴露接口是需要做的,我认可。现代项目基本上都往小型化,微服务去走,按功能划分成很多小队人马去完成,那么我是认为,小队人马( 3 个 5 个)人的内部,是没有必要做太严格的校验的。另外,基础架构开发团队产生的库或框架,那肯定是需要数据验证的,但不认同校验的粒度过细。
jeesk
2025 年 3 月 14 日
getter seter 没错,错的是滥用。

当需要对值进行校验的时候,你不用 set 你用啥?,

每个都 obj.call = xxx ,你断点和日志都没发落地。

弱小不可怕,可怕的是无知。
CodeCodeStudy
2025 年 9 月 4 日
因为 java 的字段没有多态,方法有多态,比如

```java
public class Main {
public static void main(String[] args) {
B b = new B();
b.sayMyAge1(); // 30
b.sayMyAge2(); // 18
}
}

class A {
public int age = 30;
public int getAge() {
return age;
}
public void sayMyAge1() {
System.out.println(age);
}
public void sayMyAge2() {
System.out.println(getAge());
}
}

class B extends A {
public int age = 18;
public int getAge() {
return age;
}
}
```

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.ih06.com/t/872064

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX