很好地编写了一个在java中可以为null的数字

wal*_*ros 7 java type-conversion implicit-conversion

我有一个应用程序,我需要处理来自外部源的很多数字(整数或长整数).

数字可以为空.如果它们为null,我总是需要将它们转换为0.

问题似乎微不足道,但我不想写数百次:

if (someNumber == null) {
    someNumber = 0;
} 
Run Code Online (Sandbox Code Playgroud)

我不喜欢它有两个原因:

  1. 我不喜欢为这么简单的任务写三行代码,特别是因为我需要做很多次
  2. 我不喜欢"改变"someNumber(为someNumber变量赋值)

我尝试了其他一些方法,可以在这里看到:

  public static void main(String[] args) {
    Integer zeroOrNull = new Random().nextBoolean() ? 0 : null;


    // version1: this is nasty (I already mentioned why)
    if (zeroOrNull == null) {
      zeroOrNull = 0;
    }

    // version2: this seems to much for so simple task...
    zeroOrNull = Optional.ofNullable(zeroOrNull).orElseGet(() -> 0);

    // version3: creating an util might be considerable. Is there already such predefined util ?
    zeroOrNull = MyUtil.getValueOrZero(zeroOrNull); // returns value or )

    System.out.println(zeroOrNull); // I want 0 here in case of null


  }
Run Code Online (Sandbox Code Playgroud)

什么是做"无效/转换为0"的优先方法?是否有机会隐式进行此转换?

fan*_*ama -1

使用java8 java.util.Optional类非常高效,但不要使用显式的null值,使用空Optional

这是我原来的答案,如果“高效”只是“性能”的意思,我就错了,抱歉。

意味着所有的编码过程都更好,开发和执行更安全。

http://www.oracle.com/technetwork/articles/java/java8-optional-2175753.html