为什么每当三元运算符出现 else 情况时 Java 都会调用 Integer.intValue() ?

问题描述 投票:0回答:1

当我提供

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);
    }
}
java nullpointerexception integer boxing
1个回答
0
投票

三元数的两边必须是相同的类型。由于您有一个

int
和一个
Integer
,因此有必要拆箱
Integer
。您可以将两边都设为
Integer

private static Integer getRankFromMain(int seed) {
    return seed > 4000 ? Integer.valueOf(seed) : getRank();
}
© www.soinside.com 2019 - 2024. All rights reserved.