当前位置:  开发笔记 > 编程语言 > 正文

如何显示方法是否可以返回null

如何解决《如何显示方法是否可以返回null》经验,为你挑选了2个好方法。



1> Ronald Blasc..:

一个非常好的跟进问题.我认为null一个真正特殊的值,如果一个方法可能返回null它必须在Javadoc中明确记录(@return some value ..., or null if ...).在编码时我是防御性的,并假设一种方法可能会返回,null除非我确信它不能(例如,因为Javadoc这样说.)

人们意识到这是一个问题,并且建议的解决方案是使用注释以可以自动检查的方式陈述意图.请参阅JSR 305:软件缺陷检测的注释,JSR 308:Java类型的注释和JetBrain的Nullable How-To.

您的示例可能如下所示,并被IDE,编译器或其他代码分析工具拒绝.

@NotNull
public Object methodWhichCannotReturnNull(int i) throws Exception
{
    return null; // this would lead to a compiler error!
}


很好的答案:在javadoc中明确地写它是我喜欢看到的(如http://stackoverflow.com/questions/61604中所述).但是,我很少从同事那里看到任何*完整的*javadoc.有时,我根本看不到任何javadoc,因为"代码本身就是一个文档"......唉

2> Apocalisp..:

您可以使用Option类型,这非常类似于具有零个或一个元素的列表.返回类型Option表示该方法可以返回一个Object,或者它可以返回一个特殊的类型值None.此类型可替代使用null和更好的类型检查.

例:

public Option parseInt(String s) {
   try {
      return Option.some(Integer.parseInt(s));
   }
   catch (Exception e) {
      return Option.none();
   }
}

如果你始终如一地使用它,你可以打开IDE无效警告,或者只使用grep,null如果你使用Option.none()你想要使用null文字的任何地方,就不应该出现在你的代码中.

Option标准的Scala,它Maybe在Haskell中调用.上面的链接是一个名为Functional Java的库,包含它.该版本实现了该Iterable接口,并具有monadic方法,可以让您很好地组合.例如,在以下情况下提供默认值0 None:

int x = optionalInt.orSome(0);

你可以替换这个......

if (myString != null && !"".equals(myString))

......有了这个,如果你有Option......

for (String s : myOptionString)


6年后,Java 1.8现在有了一个非常有用的`Optional`类.
推荐阅读
地之南_816
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有