java - 分配不返回无效
问题描述
我在Google Guava Github上找到了这段代码,但我无法弄清楚为什么在第 5 行该rowMap
方法在满足条件时不返回 void :
private transient @MonotonicNonNull Map<R, Map<C, V>> rowMap;
public Map<R, Map<C, V>> rowMap() {
Map<R, Map<C, V>> result = rowMap;
return (result == null) ? rowMap = createRowMap() : result;
}
Map<R, Map<C, V>> createRowMap() {
return new RowMap();
}
这条线不等于:
if (result == null) {
return rowMap = createRowMap();
} else {
return result;
}
然后对 rowMap 的赋值将返回 void。我错过了什么?
解决方案
我错过了什么?
事实上,赋值表达式的结果就是被赋值的值。:-) 因此,在该代码中,调用的结果createRowMap
被分配给rowMap
并作为rowMap
函数的结果返回。就像:
a = b = 42;
...设置b
为42
,然后设置a
为42
(b = 42
分配的结果)。
效果就像代码是这样写的一样:
public Map<R, Map<C, V>> rowMap() {
Map<R, Map<C, V>> result = rowMap;
if (result != null) {
return result;
}
rowMap = createRowMap();
return rowMap;
}
推荐阅读
- react-native - 排毒测试命令失败并出现网络请求错误 #2665
- postgresql - 无法将 gitlab 中的 postgresql 从 9.2 升级到 9.6
- javascript - 将 span 内容提交到数据库
- python - 标记荷兰语单词
- flutter - 在 Flutter 中,如何通过点击屏幕或单击按钮在 openstreetmap 上添加标记?
- delphi - 为什么用 for inside 循环 while 不起作用?
- c# - 排序值自下而上顺序
- amazon-web-services - 在 AWS 存储桶策略中调用任何操作时获取“AccessDenied”
- css - 为角料表设置固定的最小高度
- android - 如何从片段中更改背景音乐