【发布时间】:2017-07-19 16:10:57
【问题描述】:
我有一个包含这四个方法的 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");
}
我主要有以下命令:
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);
结果将是:
1
2
3
4
为什么“3”被认为是 int 而 Integer(3) 被认为是 Object? 为什么 List 或 Collection 不被视为对象?
【问题讨论】:
-
一个是原始类型,另一个是对象。
-
因为 3 是原始 int。而 Integer(3) 是一个包装类型为 int 的对象。
标签: java