【发布时间】:2011-10-10 08:01:47
【问题描述】:
我了解到我可以使用 Object 的真实类型来定义使用哪个 Method,例如:
[...]
Object foo = new String("hello");
[...]
bla(foo);
void bla(String x){
}
void bla(Integer x){
}
现在它应该采用bla(String x) 方法,但我得到了编译器错误。我知道为什么:因为foo 的类型目前是Object。我不确定我目前是否正确,但我是这样理解的,Java 会根据实际类型(或特定类型)选择方法,所以如果我将其向下转换为 Object,它将选择 @如果没有指定 Object 方法,则改为 987654326@。
或者是通过if(foo instanceof xxx)在方法void bla(Object x)?中确定类型的唯一方法
P.S.:不要误会我的意思:我不是说我可以重载方法,我的意思是我想根据实际类型(而不是定义的类型)选择方法!
【问题讨论】:
标签: java types casting downcast upcasting