我试图知道我们是否可以在Java中的同一语句中编写空检查指针,就像我们在groovy中一样?我有四个地方可以检查null。这可以更简化吗?
if(doc.getDocumentElement().getElementsByTagName("SEARCH-RESULT-ITEM") != null) {
if(doc.getDocumentElement().getElementsByTagName("SEARCH-RESULT-ITEM").item(0) != null) {
Node searchResultNode = doc.getDocumentElement().getElementsByTagName("SEARCH-RESULT-ITEM").item(0);
if(searchResultNode != null) {
}
}
}
as
doc.getDocumentElement()?.getElementsByTagName("SEARCH-RESULT-ITEM")?.item(0)
是否可能
答案 0 :(得分:1)
您询问是否可以在常规Java项目中编写类似Groovy的代码。简单回答是不。
但是,可以通过将空检查组合成一个条件来简化语句。此外,如果doc.getDocumentElement().getElementsByTagName("SEARCH-RESULT-ITEM").item(0)
不为空,我们不需要检查局部变量。
所以我们最终可能会:
if (doc.getDocumentElement().getElementsByTagName("SEARCH-RESULT-ITEM") != null
&& doc.getDocumentElement().getElementsByTagName("SEARCH-RESULT-ITEM").item(0) != null {
Node searchResultNode = doc.getDocumentElement().getElementsByTagName("SEARCH-RESULT-ITEM").item(0);
}
这样做可以将IF语句的数量从3减少到1,并消除冗余的空检查。
答案 1 :(得分:0)
Java中没有安全的解引用。
通常不好的做法是抛弃空值,而可选类也可以在方法的开头拯救checkNotNull,但没有像Groovy单行一样好看。