编译器在当前的classloader的classpath上找到类.方法(名字相同的即可,不需要签名相同),并在其中挑选(可能有重载)一个。如果没有找到签名相同的并不会到别的class library中或者上一级classloader中去寻找,而是直接报错。除非当前类中根本就没有这个名字的方法。
sorry, 上面的理解是错误的。真实的原因是“方法遮蔽”造成的。比如内部类中方法会遮蔽同名(可以不考虑参数)的外部类中的方法。----Thread.sleep()
本文探讨了Java中方法遮蔽的概念,特别是在内部类如何遮蔽外部类中的同名方法的情形。此外,还讨论了类加载器在查找类及方法时的行为特性。
编译器在当前的classloader的classpath上找到类.方法(名字相同的即可,不需要签名相同),并在其中挑选(可能有重载)一个。如果没有找到签名相同的并不会到别的class library中或者上一级classloader中去寻找,而是直接报错。除非当前类中根本就没有这个名字的方法。
sorry, 上面的理解是错误的。真实的原因是“方法遮蔽”造成的。比如内部类中方法会遮蔽同名(可以不考虑参数)的外部类中的方法。----Thread.sleep()

被折叠的 条评论
为什么被折叠?