转换Java中的可空整数值(短,长等)

时间:2018-03-09 11:43:43

标签: java

是否有任何标准的方法在Java中的非原始整数类型之间进行转换,以正确保留null值?类似的东西:

// Pseudocode
Short shortVal = null;
Long longVal = Numbers.toLong(shortVal); // longVal is expected to be null here

显然我不能在这里使用shortVal.longValue(),因为NullPointerException会被抛出。

3 个答案:

答案 0 :(得分:2)

简单简单"铸造"和#34;三元条件算子"将是最小和最快的解决方案。

Short shortVal = null;
Long longVal = shortVal == null ? null : (long) shortVal;

由于您似乎不知道有关投射的信息,这里有一个工作的示例 - 以及如何修复它。请注意,这里完全忽略了null的问题 - 这只是你可能想知道的一个古怪的铸造方面,这就是全部。

Double doubleVal = 1d;
Float floatVal = (float) doubleVal; // Inconvertible types!

工作版:

Double doubleVal = 1d;
Float floatVal = (float) (double) doubleVal;

答案 1 :(得分:0)

如何使用Java 8 API可选:

Short shortVal = null;
Optional<Long> longVal = Optional.ofNullable(shortVal != null ? new Long(shortVal) : null);
System.out.println(longVal.isPresent());

此代码段的输出为false,表示该值为空。

答案 2 :(得分:-1)

怎么样:

Long longVal = shortVal != null ? Numbers.toLong(shortVal) : null;