我是 android/java 编程新手,很困惑如何正确处理此警告。
Method invocation '' may produce 'Java.lang.NullPointerException'
我应该使用 assert 来删除警告吗?
或者更确切地说是运行时异常?
任何帮助将不胜感激。
最佳答案
我怀疑这个问题能否得到最终回答,因为这是一个见仁见智的问题。或者至少我是这样认为的——也是一种观点。 :)
我知道您想要“0 个警告”(一个非常值得称赞的目标),但可能没有“一刀切”的问题。那就是……
我认为你应该不做的事情:
- 使用断言。虽然您可以添加断言语句,但 Dalvik 会忽略它们。如果你愿意,你可以配置一个模拟器来使用它们,但不是一个真实的设备(见 Can I use assert on Android devices?)。因此,虽然它可能会删除警告,但在实践中它是无用的。
- 让方法抛出
NullPointerException
。一般来说,这将是一个坏主意。在这种情况下,由于您可能覆盖onOptionsItemSelected()
,因此它甚至是不可能的。
检查 (variable != null)
通常是最好的方法。但是,如果是,该怎么办,提供了一些其他选择。
- 如果这是一个问题,您可以恢复,即即使
searchView
不存在,您也可以继续应用程序,只要这样做。例如,只需从方法返回。不过,最好记录这种情况,这样您就可以在测试时发现它。 - 否则,如果无法继续,则抛出异常。你想fail early ,以便可以轻松检测到问题。对于这种情况,一个合理的异常(exception)是 IllegalStateException(参见 Java equivalent to .NET System.InvalidOperationException)。它基本上表明该方法是在不适当的时间执行的。但请注意,作为
RuntimeException
,这些异常是未经检查的,因此可能会导致应用崩溃。
关于java - 处理 Android Studio 的 NullPointerException lint 警告的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23371938/