それは効果的にこれを行います:
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し、次に同じ値に設定します (明らかに、呼び出しを繰り返さずに)。