关闭。这个问题需要更多focused .它目前不接受答案。
想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post .
2年前关闭。
Improve this question
这个问题可能看起来很简单,但我还没有找到答案,所以我在问堆栈溢出社区。正如标题所示,我有一个带有几个 getXXX() 方法的类,其中一些方法可能返回 null。这是记录在案的,此类的用户应该了解这一事实。
为了简化这个类的使用,我想添加一些方便的 hasXXX() 方法来指示是否设置了特定字段。首先,这似乎是个好主意……但随后想到了线程安全。
由于此类的实例可能会跨线程共享,因此属性的值可能会更改。众所周知,只有当我们知道调用 check-method 后状态不会改变时,check-then-act 才有可能,即使我们在执行 check-then-act 操作时被打断。
我想到了以下解决方案:
我不认为这是一个罕见的案例,一些 SO 成员之前可能已经发现了这个问题并找到了解决方案......
福拜尔兴
最佳答案
没有必要把事情复杂化——用户知道 XXX 是否没有设置,因为 getXXX() 返回 null。
if ( (x=bar.getXXX()) ) {
x.foo();
}
是明确的
if ( bar.hasXXX() ) {
bar.getXXX().foo();
}
将 hasXXX 真正所做的留给想象
关于multithreading - 最佳实践 : hasXXX() methods for possible null returning getXXX() methods,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1393940/