在 Java 中将 Integer(可能为 null)转换为 int 的更好方法?

A better way to convert Integer (may be null) to int in Java?

一个Integer可以是null。我通过以下方式将 Integer 转换为 int

Integer integer = null;
int i;

try {
    i = integer.intValue();
}
catch (NullPointerException e) {
    i = -1;
} 

有没有更好的方法?

避免异常总是更好。

int i = integer != null ? integer.intValue() : -1;

如果您的类路径中已经有 guava,那么我喜欢 answer provided by michaelgulak

Integer integer = null;
int i = MoreObjects.firstNonNull(integer, -1);

Apache 通用语言 3

ObjectUtils.firstNonNull(T...)

Java 8 流

Stream.of(T...).filter(Objects::nonNull).findFirst().orElse(null)

取自:

使用 Java8 也可以实现以下效果:

Optional.ofNullable(integer).orElse(-1)

Java 9 引入Objects.requireNonNullElse,Java Vanilla(无外部库)中的替代解决方案:

Integer integerValue = null;
int intValue = Objects.requireNonNullElse(integerValue, 0);