例如,在main方法中,我具有setFirstName()并调用Contact类来执行此操作。
在联系人课程中,我知道我应该使用:public String getName()
然后public void setFirstName(String name)

我知道这是正确的方法。
但是相反,我发现如果我这样做:

public String setFirstName(String name)
{
    return this.name=name;
}


这也将起作用,我不需要使用getName()方法。

谁能帮助我,为什么呢?我的访问器/更改器方法正确吗?

最佳答案

访问器的基本思想是它仅读取但不修改。这是一个有用的约定,因为如果一致地进行操作,则可以使您对某些代码的推理变得容易得多。通常,您不必期望getX()之类的怪异副作用。进行一些延迟初始化可能没问题,但是更清楚的是,是否将此类“延迟获取器”命名为getOrCreateX()或类似名称,以向用户提示首次使用可能会花费更长的时间/涉及一些昂贵的操作。

返回某些内容的增变器可能会很有用,但是如果您以可以提示其返回内容的方式对其进行命名,它将对您的类的用户有所帮助。是错误代码还是以前的值?人们不期望来自名为setX()的东西的返回值,因此他们会惊讶地看到这样的签名,而不得不查看类的文档以了解它的作用。

简介:始终编写代码,好像其他人随时都将接管您的代码一样-不要做令人惊讶的事情。即使您从不将代码交给其他任何人,您未来的自我也会感谢您选择解释该方法作用的名称。

注意:setter的实现不是很有用,因为它总是返回刚传入的新值。

关于java - Java中的访问器和Mutator,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30993236/

10-10 22:36