不要被题目吓到啊~呵呵~~
看看下面的代码 public static void main(String[] args) {
String[] a = {};
test(a);
}
private static void test(Object ob){
System.out.println("OB");
}
// private static void test(Object[] ob){
// System.out.println("AR");
// }当前输出:OB
打开 test(Object[] ob) 方法后呢?
谁能仔细深刻的讲讲其中奥义~~
看看下面的代码 public static void main(String[] args) {
String[] a = {};
test(a);
}
private static void test(Object ob){
System.out.println("OB");
}
// private static void test(Object[] ob){
// System.out.println("AR");
// }当前输出:OB
打开 test(Object[] ob) 方法后呢?
谁能仔细深刻的讲讲其中奥义~~
T1 t = new T2();
t.print();
}class T2 extends T1{
public static void print(){
System.out.println("T2 print");
}
}abstract class T1{
public static void print(){
System.out.println("T1 print");
}
}是不是和你说的一样~
而基本类型如int [] a的元素可以不叫对象其实对于重载的test,无论是 test(Object ob)还是 test(Object[] ob)
test(a),都是把a[0]传进去,只是参数匹配的先后关系而已,有后者当然
调用后者,没有就调用前者,可以这样分别测试:
private static void test(Object ob){
System.out.println(ob); --》打印出类名@hashcode,可以看出显然是对象啦
}
private static void test(Object[] ob){
System.out.println(ob); 结果同上
}
但是,getGenericInterface()反回的确是java.lang.Clonable.
这就是说String[] 还有Object[] 都是Clonable的实现。
而重载方法时,Object是优先级最低,所以调用了Object[]为参数的方法。自己赞一个。嘿嘿。