2014-11-22 48 views
0

有什麼更好的用來檢查對象是否爲空。有效的方法來測試對象是否爲空

檢查對象是否爲空或爲其設置標誌。 通過說更好的即時通訊尋找性能(更快,更安全)。

public class A 
{ 

Object test; 
boolean isTestObjectSet; 

public A(Object test) 
{ 
this.test = test; 
isTestObjectSet = true; 
} 

public A() 
{ 

} 

public void doSomething() 
{ 

if(test != null) 
//do something 

//VS 

if(isTestObjectSet) 
//do something 


} 
} 
+0

對於這種情況,Java 8有'Optional '。性能不是設計原因,但可以假設編譯器在某種程度上利用了語義。尤其是用法。 – 2014-11-22 16:20:08

+0

不用擔心這樣的微觀性能問題。儘可能清楚地編寫代碼,只有在證明存在問題時才擔心這些事情。 – MeBigFatGuy 2014-11-22 16:37:04

回答

3

使用isTestObjectSet只是讓事情變得比他們需要的更復雜。只需使用test != null:它更好地傳達了您的意圖不會強制您保持此isTestObjectSet變量與設置是否test同步。 絕對沒有這兩個變體之間的性能差異。

+0

感謝您的回答。 我不知道java如何檢查空對象,我認爲可能設置一個標誌會更好 – dasdasd 2014-11-22 16:30:16

2

在我看來 - 顯式檢查(與'null'比較)速度更快,用許多中間布爾變量不會混淆你的代碼。 更安全?兩種檢查都是布爾檢查,所以它總是「真」/「假」比較。

相關問題