我是android/java编程的新手,我很困惑如何正确处理这个警告.
方法调用''可能产生'Java.lang.NullPointerException'
我应该断言要删除警告吗?
或者说是运行时异常?
任何帮助,将不胜感激.
我怀疑这个问题可以得到最终的回答,因为这是一个意见问题.或者至少我相信 - 也是一种观点.:)
我知道你想要"0警告"(一个非常值得称赞的目标),但可能没有"一刀切"的问题.那说......
事情,我相信你应该不会做的事:
使用断言.虽然您可以添加断言语句,但Dalvik会忽略它们.您可以根据需要配置仿真器以使用它们,但不能使用真实设备(请参阅我可以在Android设备上使用断言吗?).因此虽然它可能会删除警告,但在实践中它是无用的.
抛出方法NullPointerException
.一般来说,这是一个坏主意.在这种情况下,既然你可能会覆盖 onOptionsItemSelected()
,那甚至都不可能.
检查(variable != null)
通常是最好的方法.但是,如果有的话,该怎么做才会提出其他一些选择.
如果这是一个问题,你可以恢复,即你可以继续申请,即使searchView
不存在,只需这样做.例如,只需从方法返回.记录这种情况是个好主意,所以你可以在测试时发现它.
否则,如果无法继续,则抛出异常.您希望尽早失败,以便轻松检测到问题.这种情况的一个合理的例外是IllegalStateException(参见Java等效于.NET System.InvalidOperationException).它基本上表明此方法是在不适当的时间执行的.但要小心,因为RuntimeException
这些异常是未经检查的,因此可能会导致应用程序崩溃.
我开始使用了
@SuppressWarnings("ConstantConditions")
在简单的方法,我确定id不是null.
@ Herrbert74的建议确实可以正常工作,但是有时最好不要@SuppressWarnings("ConstantConditions")
在整个方法中添加a (如果它不是很简单的话),最好的方法是//noinspection ConstantConditions
在警告行上使用。
这些是我的经验法则:
@SuppressWarnings("ConstantConditions")
方法简单时使用使用
//noinspection ConstantConditions
时,该方法是复杂的,你需要删除只在特定的行警告