gpt4 book ai didi

java - 使用三元运算符调用重载方法?

转载 作者:行者123 更新时间:2023-11-30 02:00:35 27 4
gpt4 key购买 nike

不能通过三元运算符检查 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) {
//
}
}
}

sc

最佳答案

方法解析是在编译时完成的。最终,您传递一些将值返回给方法的表达式。编译器检查表达式的类型并确定它应该调用哪个方法。

在这里,您尝试编写一个表达式,该表达式可能根据运行时信息返回不同类型,并相应地调用方法。正如您所看到的,这根本不会飞。相反,您可以根据类型显式调用不同的方法(它们具有相同名称的事实并不重要 - 它们仍然是不同的方法!):

if (object instanceof Integer) {
Foo.load((Integer) object); // Calls Foo.load(Integer)
} else if (object instanceof String) {
Foo.load((String) object); // Calls Foo.load(String)
} else {
Foor.load(object); // Calls Foo.load(Object)
}

关于java - 使用三元运算符调用重载方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52981892/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com