それは効果的にこれを行います:
public void setLastName(String lastName) {
this.lastName = lastName;
notifyListeners(this, "lastName", lastName, lastName);
}
たとえば、最初にインスタンス メンバーlastName
を引数に設定しlastName
、次に関数を呼び出すときに同じ値を再度使用します。
それを使用する慣用句がいくつかありますが、それほど一般的であるとは言えません (以下を参照)。その特定のケースでは、それを行う特に正当な理由はありません。アイデアは、「変数から取得」操作の読み取りlastName
は一度だけ行う必要があり、その後、その値が割り当てられthis.lastName
、関数に渡されるというものです。しかし、コンパイラと JVM は、明確なコードが (合理的な範囲内で) 効率的であることを確認する以上の役割を果たしますが、混乱を招くコードを人々が理解するのを助けることはできません。:-)
jlordoがコメントで指摘しているように、この種の割り当てと使用が一般的な慣用句がいくつかあります。たとえば、次のとおりです。
while ((line = in.readLine()) != null) {
// ...
}
関数を呼び出すときはよりまれですが、そのようなループでは非常に一般的です。
複合代入にも表示されます。たとえば、次のようになります。
x = y = z = foo();
...これは を呼び出しfoo()
、z
戻り値に設定y
し、次に同じ値に設定x
し、次に同じ値に設定します (明らかに、呼び出しを繰り返さずに)。