【发布时间】:2019-01-12 17:17:04
【问题描述】:
我在一个 android 应用程序中实现了一个 Hashtable,它最初以以下方式填充:
if(table.containsKey(key)){
table.get(key).add(item);
}else{
table.put(key, new ArrayList<Items>());
table.get(key).add(item);
}
(变量名略有变化)
Android Studio 对两种添加方法都给出了Method invocation 'add' may produce NullPointerException 警告。我以前(也是唯一)对 dict 类型结构的经验来自 Python,这从来都不是问题,但为了安全起见,我想检查一下:这实际上是否有可能抛出 NPE?
干杯
【问题讨论】:
-
从 Android API 26 开始有一种更简单的方法:
table.computeIfAbsent(key, k -> new ArrayList<Items>()).add(item) -
@JoeC 这很酷,不幸的是我的 API 级别不支持它(最低为 19,需要 24)。谢谢,不过,不知道这个
-
可能值得注意的是,甚至 Android 本身也不再支持 API 级别 19,因此您可能需要考虑一下为什么。
-
@JoeC 那是……一个很好的观点。不幸的是,这不取决于我,但我会问我的主管
-
奇怪,你得到了'add'的错误,而不是get或put。你确定你使用的是
HashTable?
标签: java android-studio hashtable