当我提供
seed
作为任何大于 4000 的值时,它会按原样返回。但对于任何小于或等于 4000 的 seed
(即当三元运算符条件计算为 false 时),该程序最终会出现空指针异常。
但是,如果
seed
在 Integer
参数中声明为 getRankFromMain
,则它可以正常工作。
public class TestSomething {
private static Integer getRank() {
return null;
}
private static Integer getRankFromMain(int seed) {
return seed > 4000 ? seed : getRank();
}
public static void main(String[] args) {
Integer rank = getRankFromMain(1000);
System.out.println(rank);
}
}
三元数的两边必须是相同的类型。由于您有一个
int
和一个 Integer
,因此有必要拆箱 Integer
。您可以将两边都设为 Integer
。
private static Integer getRankFromMain(int seed) {
return seed > 4000 ? Integer.valueOf(seed) : getRank();
}