获取哈希图问题。
我尝试将hashmap
移到if (BookValues.containsKey(ID))
之外,而我总是会得到:
java空指针异常
这是代码: (让我们假设这已被声明。我将Integer,Class用于我的哈希图)
int targetID = BookValues.get(ID).BookID.intValue();
String targetTitle = BookValues.get(ID).Title.toString();
String targetAuthor= BookValues.get(ID).Author.toString();
int targetCopies=BookValues.get(ID).Copies.intValue();
每当我在contains密钥内对其进行编码时,它都可以工作,但是当我在其外部进行操作时,它会出错。我当时想将其移到.containsKey
之外,因为它会使我的代码更长,并且我试图保存spa有人可以向我解释吗?
答案 0 :(得分:1)
代码
int targetID = BookValues.get(ID).BookID.intValue();
String targetTitle = BookValues.get(ID).Title.toString();
String targetAuthor= BookValues.get(ID).Author.toString();
int targetCopies=BookValues.get(ID).Copies.intValue();
在很多地方都可能引发异常。
BookValues.get(ID)
将为您提供该对象(如果存在)或null
(如果不存在)。为避免可能的NullPointerException
,应将此行分开。以下假设您的地图的值为BookValue
对象。
BookValue value = BookValues.get(ID);
if (value != null) {
int targetId = value.BookID.intValue();
String targetTitle = value.Title.toString();
String targetAuthor = value.Author.toString();
int copies = value.Copies.intValue();
// rest of code here
} else {
// TODO do something if there's no value in the map for the specified key
}
请注意,以这种方式,您还避免在上重复.get(ID)
。