在Java 8+中将数字的String表示形式转换为Integer(单行不用,如果)

Can*_*ner 0 string integer java-8

这听起来很简单,但是我找不到在不使用Java 8+的情况下将String值(可能为null)转换Integer为单行的方法if else.答案可能涉及ofNullable和的使用isPresent.

我试过的一些事情:

String x = ...;

Integer.valueOf(x); // fails if x is null
Optional.ofNullable(Integer.valueOf(x)).orElse(null); // NullPointerException
Run Code Online (Sandbox Code Playgroud)

Era*_*ran 5

int value = Optional.ofNullable(x).map(Integer::parseInt).orElse(0);
Run Code Online (Sandbox Code Playgroud)

这将导致一个默认值0,如果输入的Stringnull.

作为替代方案,使用:

Integer value = Optional.ofNullable(x).map(Integer::valueOf).orElse(null);
Run Code Online (Sandbox Code Playgroud)

这将导致null输入Stringnull.