可能重复:
Java 条件运算符?:
通过 Java 三元运算符的自动装箱行为的结果类型 NullPointerException
假设我有两个功能:
f(MyObject o) { ... }
f(int i) { ... }
我这样称呼他们:
f(someCondition ? 10 : null);
这可以编译,但是当我运行它时,我得到一个空指针异常(抱歉,我不确定在哪种情况下)。我的一些问题是:
- 为什么它甚至可以编译?是什么类型的
foo ? 10 : null
? - 它显然没有调用“正确”函数,因为这不会导致 NPE。那么它调用的是哪个函数呢?是吗
f((MyObject)10);
?f((int)null)