首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

碰到的一个有趣的题目

2013-09-06 
遇到的一个有趣的题目[解决办法]当然是输出x(ArrayList)了!---------首先,来一段题外的--------其实,这是

遇到的一个有趣的题目


[解决办法]
当然是输出x(ArrayList)了!

---------首先,来一段题外的--------

其实,这是根据函数的重载规则来的,
比如,你如果把你的函数里
    public static void x(int x){
        System.out.println("x(int)");
    }
改成
    public static void x(Integer x){
        System.out.println("x(int)");
    }
程序就会报错!
因为匹配有错!

-----------现在进入正题-------

1、思考,为什么程序不报错
在你的程序里面,int 是原生类型,Object是基本对象类型,所以,这两个和List \ ArrayList不冲突,所以,不会报错!

2、首先证明了你的程序不报错,现在,分析别的。
在你的程序里,int和null是不匹配的,所以,x(null)根本不会理会x(int),
然后,Object ---> List ---> ArrayList是继承关系。
在英语语法中,有一个有意思的原则,叫:就近原则 , Java的设计者在设计重载函数的冲在顺序时,不应该忽视他,因为这个原则很好的表达了继承关系。
于是,根据这原则,自然选择x(ArrayList)。



3、猜是没有意义的!前面很多楼层的猜测,我建议好好看看JavaSE基本部分(即Java基础)

热点排行
Bad Request.