List <T>是否被视为对象,集合或其他任何东西 - Java

Abd*_*uti 2 java

我有一个包含以下四种方法的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?为什么列表或集合不被视为对象?

eug*_*ioy 5

它在编译时选择了最具体的方法版本.

Integer被认为是Object,因为它是一个Object(它从继承Object):

https://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html

Collection并且List将被视为一种Object为好,如果你没有的方法更具体的版本.

但是因为你也为Collectionand 重载了方法List,所以使用它们.