考虑这一行:
if (object.getAttribute("someAttr").equals("true")) { // ....
显然,这行是潜在的错误,属性可能是null
,我们将获得NullPointerException
。因此,我们需要将其重构为以下两种选择之一:
第一种选择:
if ("true".equals(object.getAttribute("someAttr"))) { // ....
第二种选择:
String attr = object.getAttribute("someAttr");
if (attr != null) {
if (attr.equals("true")) { // ....
第一种选择阅读时比较笨拙,但更为简洁;第二种选择的意图很明确,但很冗长。
就可读性而言,您更喜欢哪个选项?
我一直都在用
if ("true".equals(object.getAttribute("someAttr"))) { // ....
因为尽管阅读起来有点困难,但是它的冗长程度要小得多,而且我认为它足够易读,因此您可以很容易地习惯它
昨天我不得不写了一段难看的代码,以便对一个对象的字段执行许多空检查,以避免来自三进制运算符构造的NPE。 有问题的代码: Q2:如何优化用于空检查的光荣if-else构造?
问题内容: 我正在阅读出色的在线书籍http://nodebeginner.org/,并尝试了简单的代码 现在我不知道(而且我仍然不知道!)如何优雅地关闭node.js,所以我就去了。现在,每次我尝试运行时,都会收到以下错误消息。 因此,有两个问题: 1)如何正常关闭node.js? 2)如何修复我创建的混乱? 问题答案: 使用+ 优雅地退出节点进程 清理混乱取决于您的平台,但基本上,您需要找到运
问题内容: 如何在Linux和Windows中正常停止Java进程? 什么时候被调用,什么时候不被调用? 终结器又如何呢? 我可以从外壳向Java进程发送某种信号吗? 我正在寻找最好的便携式解决方案。 问题答案: 在所有未强制终止VM的情况下,都会执行关机挂钩。因此,如果要发出“标准” kill(通过kill命令),则它们将执行。同样,它们将在调用后执行。 但是强行杀死(或),然后它们将不会执行。
问题内容: 我写了一个线程,它花费太多时间执行,而且似乎还没有完全完成。我想优雅地停止线程。有什么帮助吗? 问题答案: 做到这一点的好方法是让一个线程保护一个Thread的变量,并在你要停止它的时候将其设置为外部变量,例如: `class MyThread extends Thread { volatile boolean finished = false; public void stopMe(
我试图在我的Android应用程序中执行ping命令,并能够取消它/发送中断信号。基本上,我希望在任何普通的linux中,当你发送ctrl c到ping时,都能得到ping统计数据。我读过Send Ctrl-C to process open by Java,但它针对的是Windows平台,而tbh似乎有点过头了。我执行命令的代码(我使用的是rxjava): 以及开始/取消: 到目前为止,我试图终
在我的webapp中,我创建了一个使用具有固定大小线程池的的服务。我在整个应用程序生命周期中重用相同的。 All在Tomcat中运行,在关闭时出现以下错误: 我确实意识到在关闭tomcat之前需要关闭ExecutorService。Soms所以线程已经谈到了这一点,但我找不到一个干净的方法来处理这一点。 我是否应该使用,就像@tim-bender建议的那样,在优雅地关闭线程和执行器?还是应该使用C