我的教科书将mutator方法定义为修改其操作对象的方法。
并且,它将访问器方法定义为在不更改对象的情况下查询对象的某些信息的方法。
我说nextInt是一个访问方法是正确的吗?
我的理由是nextInt不修改它所操作的对象。如果我创建了一个名为in的Scanner对象,当我写入"int a = in. nextint();"时,它不会修改实际的Scanner对象。相反,它被用作一种getter方法,用于为a赋值。
实际上,从javadoc:
int int nextInt(int radix)将输入的下一个标记扫描为int型。如果下一个令牌不能像下面描述的那样转换成一个有效的int值,这个方法将抛出InputMismatchException。如果翻译成功,扫描器向前推进到匹配的输入。
…
这表明在调用该方法后扫描程序的状态发生了改变。这使得nextInt
成为一个突变体。
因此,nextInt
既是一个mutator又是一个accessor
你是部分正确的@Nishant。Scanner类中的nextInt()方法确实返回下一个作为键盘输入的值。但是在java中,我们总是只对返回对象的指定属性的getter使用mutator。因此,我们不能将nextInt()命名为一个mutator。为了回答您的问题,nextInt()既不是访问器也不是mutator。希望我说得清楚了。