首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java Setter和Getter

Java Setter和Getter
EN

Stack Overflow用户
提问于 2011-08-27 00:48:19
回答 3查看 5K关注 0票数 15

总是推荐使用getter/setter来访问私有变量。为什么将它们声明为公共并访问它们不是一个更好的主意。不管怎样,我们是用getter和setter来访问它吗?

EN

回答 3

Stack Overflow用户

发布于 2011-08-27 00:52:16

我总是被告知,其中一个主要原因是尝试并计划未来的变化。它可能一开始只是

代码语言:javascript
复制
public int getInt() { return _someInt;}

但最终可能会成为

代码语言:javascript
复制
public int getInt() { 
  // do some processing
  return _someInt;

}

这将使您不必对访问公共属性的位置进行大量更改,而不是使用getter/setter。

票数 7
EN

Stack Overflow用户

发布于 2011-08-27 00:50:18

通常,setter允许您对分配给私有成员的值的类型进行限制。所以可能负值是不允许的,等等。

由于上面的原因,您通过将成员设置为私有来强制访问该成员,因此getter允许消费者访问该成员的值。

票数 5
EN

Stack Overflow用户

发布于 2011-10-04 21:41:11

我经常使用getter和setter,但显然我们做得不对。例如:(从http://java.dzone.com/articles/java-properties-without获取)

使用getter和setter (很长)

代码语言:javascript
复制
public class Teacher {

 @Id @Column(length=5) @Required 
 private String id;

 @Column(length=40) @Required
 private String name;

 @OneToMany(mappedBy="teacher")
 private Collection pupils;

 public String getId() {
     return id;
 }

 public void setId(String id) {
     this.id = id;
 }

 public String getName() {
     return name;
 }

 public void setName(String name) {
     this.name = name;
 }

 public Collection getPupils() {
     return pupils;
 }

 public void setPupils(Collection pupils) {
     this.pupils = pupils;
 }

}

with public:(只有13行,包括空行)。

代码语言:javascript
复制
@Entity
public class Teacher {

 @Id @Column(length=5) @Required 
 public String id;

 @Column(length=40) @Required
 public String name;

 @OneToMany(mappedBy="teacher")
 public Collection pupils;

}

使用getter和setter调用(不是很清楚,但是C#让它更简洁)。

代码语言:javascript
复制
teacher.setName("M. Carmen");
String result = teacher.getName();

调用public (直接和干净)。

代码语言:javascript
复制
teacher.name = "M. Carmen";
String result = teacher.name;

一种是冗长的,它增加了更多的代码(以及工作时间和处理时间的代码成本),而另一种是直接的。

在某些情况下,必须使用setter和getter,但如果不是这样,那么我认为使用它作为默认设置有点过分了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7207994

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档