我有一个包含以下四种方法的B类:
public class B {
public void f(int x) {
System.out.println("1");
}
public void f(Object x) {
System.out.println("2");
}
public void f(List x) {
System.out.println("3");
}
public void f(Collection x){
System.out.println("4");
}
Run Code Online (Sandbox Code Playgroud)
而在主要我有这些命令:
B o = new B();
Integer n = new Integer(3);
List<Integer> l = new ArrayList<>();
Collection<Integer> m = new ArrayList<>();
o.f(3);
o.f(n);
o.f(l);
o.f(m);
Run Code Online (Sandbox Code Playgroud)
结果将是:
1
2
3
4
为什么"3"被认为是int而Integer(3)被称为Object?为什么列表或集合不被视为对象?
它在编译时选择了最具体的方法版本.
Integer被认为是Object,因为它是一个Object(它从继承Object):
https://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html
Collection并且List将被视为一种Object为好,如果你没有的方法更具体的版本.
但是因为你也为Collectionand 重载了方法List,所以使用它们.
| 归档时间: |
|
| 查看次数: |
72 次 |
| 最近记录: |