是否有任何标准的方法在Java中的非原始整数类型之间进行转换,以正确保留null
值?类似的东西:
// Pseudocode
Short shortVal = null;
Long longVal = Numbers.toLong(shortVal); // longVal is expected to be null here
显然我不能在这里使用shortVal.longValue()
,因为NullPointerException
会被抛出。
答案 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;