Jer*_*vel 0 java observer-pattern
在查找Observer模式的示例时,我遇到了以下代码.第四个参数是一个String,但我想知道那里发生了什么:它是否将实例字段lastName设置为新lastName值然后返回lastName?
这种形式的缩短是常见做法吗?
public void setLastName(String lastName) {
notifyListeners(this, "lastName", lastName, this.lastName = lastName);
}
Run Code Online (Sandbox Code Playgroud)
这有效地做到了:
public void setLastName(String lastName) {
this.lastName = lastName;
notifyListeners(this, "lastName", lastName, lastName);
}
Run Code Online (Sandbox Code Playgroud)
例如,首先将实例成员lastName设置为参数lastName,然后在调用函数时再次使用该值.
我不会说这是常见的,虽然有一些习惯使用它(见下文); 在这种特定情况下,没有特别好的理由这样做.这个想法是"从变量获取"操作lastName只需要发生一次,然后将该值分配给this.lastName函数并传递给函数.但是编译器和JVM不仅可以确保清晰的代码(在合理范围内)是有效的,而且它们无法帮助人们理解令人困惑的代码.:-)
正如jlordo在评论中指出的那样,有一些习惯用法,这种分配和使用很常见,例如:
while ((line = in.readLine()) != null) {
// ...
}
Run Code Online (Sandbox Code Playgroud)
调用函数时更为罕见,但在这种循环中很常见.
您还可以在复合赋值中看到它,例如:
x = y = z = foo();
Run Code Online (Sandbox Code Playgroud)
...调用foo(),设置z为返回值,然后设置y为相同的值,然后设置x为相同的值(显然,不重复调用).
| 归档时间: |
|
| 查看次数: |
85 次 |
| 最近记录: |