【发布时间】:2019-03-29 15:07:37
【问题描述】:
用三元运算符检查instanceOf不能调用重载方法的规则是什么?
这可能是一个愚蠢的问题,但我不想解释这条规则。你可以在截图中看到,我不能使用三元运算符来引用多个方法。
public class Sample {
public static void main(String[] args) {
Object object = new String("");
Foo.load(object instanceof Integer ? (Integer) object :
object instanceof String ? (String) object : null);
}
public static class Foo {
public static void load(String s) {
//
}
public static void load(Integer s) {
//
}
}
}
【问题讨论】:
-
图片无法访问
-
@TheScientificMethod 我重新贴了图片,现在可以了吗?
-
我认为更多的是三元运算符的每个返回值必须具有相同的类型。由于
?之后的值是Integer类型,:之后的值也必须是Integer,并且您提供的是String。 -
此代码不会对我产生编译错误。它只会调用
load(Object)方法。 -
@dave 是的,可能是这样,无论如何都可以这样做吗?
标签: java methods compiler-errors ternary-operator overloading