Skip to main content
 首页 » 编程设计

java之为什么我们需要 setter/getter

2025年05月04日25kenshinobiy

我已经阅读了讨论 "Why use getters and setters?" 的 stackoverflow 页面,我一直被使用setter的一些原因说服,例如:后期验证,数据封装等。但是无论如何使用getter的原因是什么?我没有看到任何危害获取私有(private)字段的值,或在获取字段值之前进行验证的原因。 从不使用 getter 并始终使用点表示法获取字段值是否可以?

请您参考如下方法:

如果 Java 类中的给定字段对于读取可见(在表达式的右轴上),那么也必须可以分配该字段(在表达式的 LHS)。例如:

class A { 
    int someValue; 
} 
 
A a = new A(); 
int value = a.someValue; // if you can do this (potentially harmless) 
a.someValue = 10;        // then you can also do this (bad) 

除了上述问题之外,在类中使用 getter 的一个主要原因是为了保护该类的使用者免受实现细节的影响。 getter 不一定必须简单地返回一个值。它可以返回从 Collection 或其他东西中提取的值。通过使用 getter(和 setter),我们使类的使用者不必担心实现会随时间发生变化。