[英]Java: Quick/Elegant way to check for null
在我正在編寫的程序中,我發現自己做了以下很多事情......
Map<String,List<String>> network = loadSerializedObj(file); // null if failed
if(network != null) {
anonNet = util.anonymize(newNet);
} else {
// Some sort of error handling.
System.out.println("Some sort of error message. Exiting...");
System.exit(0);
}
有沒有更簡潔的方法來處理事件,從文件加載序列化對象不起作用,並且該方法返回null? 任何提示都是受歡迎的。 在哪里,我可以讓它更優雅?
你應該使loadSerializedObj拋出異常而不是返回null。 當你沒有任何東西可以返回時,你可以返回null。 什么東西壞了,你應該拋出異常。
在這種情況下,您可以使用異常catch。
Map<String,List<String>> network = loadSerializedObj(file); // null if failed
try {
anonNet = util.anonymize(newNet);
} catch(NullPointerException npe) {
System.out.println("Some sort of error message. Exiting...");
System.exit(0);
}
但是你必須指定util.anonymize來拋出NullPointerException,如果還沒有的話。
你可以有某種
class MyAssert {
static<T> assertNotNull(T object) {
if (object == null) {
System.out.println("something is wrong...");
System.exit(0);
}
return object;
}
}
嘗試返回空地圖而不是空值:
if(!loadSerializedObj(file).isEmpty())
{
anonNet = util.anonymize(newNet);
}
else
{
// error handling
}
private Map<String,List<String>> loadSerializedObj(File file)
{
// do stuff
if(mapObject == null)
{
mapObject = Collections.emptyMap();
}
return mapObject
}
您可以對名為n(object)的函數進行靜態導入,如果為null,則返回boolean。 或者使用Groovy :)
我認為你所擁有的是在保持易於閱讀/維護代碼的同時獲得的。
番石榴的先決條件可以是一個簡潔易讀的檢查方法。
Preconditions.checkNotNull(myReference, "My error message");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.