我有以下代码:
public class Main {
public boolean equals(String other){
return other == new Object();
}
public boolean equals(Object other){
return other == new Object();
}
public static void main(String[] args){
String s = "";
Object b1 = new Main();
System.out.println(b1.equals(s));
}
}
据我所知,equals
方法选择应该以这种方式工作:在编译时将选择签名,并且由于s
是编译时类型(例如),因此应该选择type
带有参数的方法,并且因为是then的一个实例我们将进入我们的实现而不是's。String
b1
Main
Main
equals
Object
但是,在调试时,我看到我Main
使用 type 参数输入了实现Object
。
我看到了那 2 篇文章:
基于参数的真实类型的重载方法选择- 没有解释我的情况,而是类型为s
Object 的情况。
https://stackoverflow.com/a/8356435/4345843 - 据我所知,这个答案如果属实,支持我的理论。
很高兴得到解释。