2016-10-16 10 views
0

私の教科書は、動作するオブジェクトを変更するメソッドとして、ミューテータメソッドを定義しました。ScannerクラスのnextIntメソッドはJavaのアクセサーかミューテータですか?

そして、オブジェクトを変更することなくいくつかの情報を問い合わせるメソッドとしてアクセサメソッドを定義します。

私はnextIntがアクセサメソッドであると言っていますか?

私の推論は、nextIntは操作対象のオブジェクトを変更しないということです。 inというScannerオブジェクトを作成した場合、「int a = in.nextInt();」と書くと、実際のScannerオブジェクトは変更されません。代わりに、aに値を代入するゲッターメソッドの一種として使用されます。

+0

正しいですが、スキャンされたトークンがintとして返されます。https://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#nextInt() – Khaled

答えて

2

実際には、Javadocから:

公共のint nextInt(INT基数)

はintとして入力の次のトークンをスキャン。このメソッドは、次のトークンを有効なint値に変換できない場合、InputMismatchExceptionをスローします。 翻訳が成功すると、スキャナは一致した入力を通過します。

...

これは、スキャナの状態がメソッドを呼び出した後に変更されていることを伝えます。これにより、nextIntがミューテータになります。

したがって、nextIntは、ミューテータとアクセッサの両方です。

-1

あなたは部分的に@Nishantです。 ScannerクラスのnextInt()メソッドは、キーボードからの入力として与えられる次の値を返します。しかし、私たちは常に、オブジェクトの指定されたプロパティを返すjavaのgetterに対してのみ 'mutator'を使用します。だから私たちはnextInt()をミューテータと名付けることはできません。あなたの質問に答えるために、nextInt()はアクセサでもミューテータでもありません。私ははっきりしていたと思う。

関連する問題