我是编程和Java的新手.我注意到,在Java API中,if语句中有一些奇怪的赋值方法.
以下是Map界面的示例:
default V replace(K key, V value) {
V curValue;
if (((curValue = get(key)) != null) || containsKey(key)) {
curValue = put(key, value);
}
return curValue;
}
Run Code Online (Sandbox Code Playgroud)
以这种方式嵌套赋值是否有某种好处?这纯粹是一种风格选择吗?为什么不在curValue第一次声明时进行赋值?
// why not do it like this?
default V replace(K key, V value) {
V curValue = get(key); // not nested
if (curValue != null || containsKey(key)) {
curValue = put(key, value);
}
return curValue;
}
Run Code Online (Sandbox Code Playgroud)
我在Map界面和其他地方的许多新添加的Java 8方法中都注意到了这一点.这种嵌套分配的形式似乎是不必要的.
编辑:Map界面中的另一个示例:
default V computeIfAbsent(K key,
Function<? super K, ? extends …Run Code Online (Sandbox Code Playgroud)