2014-11-22 73 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'比较)速度更快,用许多中间布尔变量不会混淆你的代码。 更安全?两种检查都是布尔检查,所以它总是“真”/“假”比较。

相关问题