我了解到我可以使用 Object 的真实类型来定义使用哪个 Method,例如:
[...]
Object foo = new String("hello");
[...]
bla(foo);
void bla(String x){
}
void bla(Integer x){
}
现在它应该采用该bla(String x)
方法,但我得到了编译器错误。我知道为什么:因为foo
当前的类型是Object
. 我不确定我目前是否正确,但我是这样理解的,Java 将通过真实类型(或特定类型)选择方法,所以如果我将其向下转换为Object
,它将String
选择Object
方法已指定。
或者是在方法中确定类型的唯一if(foo instanceof xxx)
方法void bla(Object x)?
PS:不要误会我的意思:我不是说我可以重载方法,我的意思是我要根据真实类型(而不是定义的类型)选择方法!