避免!= null语句

避免!= null语句

我用object != null了很多东西来避免NullPointerException

有没有一个很好的替代品呢?

例如:

if (someobject != null) {
    someobject.doCalc();}

NullPointerException当不知道对象是否存在时,这避免了a null

请注意,接受的答案可能已过期,请参阅https://stackoverflow.com/a/2386013/12943以获取更新的方法。


心有法竹
浏览 776回答 3
3回答

慕田峪9158850

如果您使用(或计划使用)Java IDE,如JetBrains IntelliJ IDEA,Eclipse或Netbeans或像findbugs这样的工具,那么您可以使用注释来解决此问题。基本上,你已经@Nullable和@NotNull。您可以在方法和参数中使用,如下所示:@NotNull public static String helloWorld() {     return "Hello World";}要么@Nullable public static String helloWorld() {     return "Hello World";}第二个示例将无法编译(在IntelliJ IDEA中)。当您helloWorld()在另一段代码中使用第一个函数时:public static void main(String[] args){     String result = helloWorld();     if(result != null) {         System.out.println(result);     }}现在,IntelliJ IDEA编译器会告诉您检查没用,因为该helloWorld()函数永远不会返回null。使用参数void someMethod(@NotNull someParameter) { }如果你写的东西像:someMethod(null);这不会编译。上一个例子使用 @Nullable@Nullable iWantToDestroyEverything() { return null; }这样做iWantToDestroyEverything().something();你可以肯定这不会发生。:)这是一种很好的方式让编译器检查比通常更多的东西,并强制你的合同更强。不幸的是,并非所有编译器都支持它。在IntelliJ IDEA 10.5及更高版本中,他们添加了对任何其他@Nullable @NotNull实现的支持。请参阅博客文章更灵活和可配置的@Nullable / @NotNull注释。

守着一只汪

如果不允许空值如果您的方法是外部调用的,请从以下内容开始:public void method(Object object) {   if (object == null) {     throw new IllegalArgumentException("...");   }然后,在该方法的其余部分中,您将知道它object不是null。如果它是一个内部方法(不是API的一部分),只需记录它不能为空,就是这样。例:public String getFirst3Chars(String text) {   return text.subString(0, 3);}但是,如果您的方法只是传递了值,并且下一个方法将其传递给它,则可能会出现问题。在这种情况下,您可能需要检查上面的参数。如果允许null这真的取决于。如果发现我经常做这样的事情:if (object == null) {   // something} else {   // something else}所以我分支,做两件完全不同的事情。没有丑陋的代码片段,因为我真的需要根据数据做两件事。例如,我应该处理输入,还是应该计算一个好的默认值?我真的很少使用这个成语“ if (object != null && ...”。如果您显示通常使用成语的示例,则可能更容易为您提供示例。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java