一个关于传入参数为null的问题
2016-12-16 11:46
489 查看
面试遇到的:代码如下:
问运行结果是什么?
答案:
Integer:null
延伸:假如把
分析:
该题目涉及点较多,比如内部类的实例化,不作为重点;类A中有两个方法名一样的方法声明,复习一下,假如同一类中有两个或以上方法名一样的方法声明是如何区分的呢?(第一种:返回类型不一致;第二种:传入参数不一致,本题为第二种)。
当null作为参数传入时编译器选择哪一个方法调用呢?首先null表示不确定的对象,即不知道类型和值是什么,一切未知。所以:
当把传参类型改成Double,则main中无法确定到底调用哪一个方法(因为null表示不确定对象,so不知道它是Integer or Double喽),编译不通过;
当两个方法中传入的参数为继承关系时(Interger extends Object)则将不确定对象null当作子类型处理。到这里才是重点。
public class Test { public static void main(String[] args){ new Test().new A().get(null); } class A{ public void get(Object o){ System.out.println("objct:" + o); } public void get(Integer str){ System.out.println("Integer:" + str); } } }
问运行结果是什么?
答案:
Integer:null
延伸:假如把
public void get(Object o){ System.out.println("objct:" + o); }传参改成Double类型,则结果又是什么?
分析:
该题目涉及点较多,比如内部类的实例化,不作为重点;类A中有两个方法名一样的方法声明,复习一下,假如同一类中有两个或以上方法名一样的方法声明是如何区分的呢?(第一种:返回类型不一致;第二种:传入参数不一致,本题为第二种)。
当null作为参数传入时编译器选择哪一个方法调用呢?首先null表示不确定的对象,即不知道类型和值是什么,一切未知。所以:
当把传参类型改成Double,则main中无法确定到底调用哪一个方法(因为null表示不确定对象,so不知道它是Integer or Double喽),编译不通过;
当两个方法中传入的参数为继承关系时(Interger extends Object)则将不确定对象null当作子类型处理。到这里才是重点。
相关文章推荐
- C++关于参数为const引用类型的函数调用参数成员函数的一个问题
- 关于oracle中传入参数和in一起用的问题
- 关于EL自定义函数和如果其中参数是一个自定义的类的问题
- 关于结构指针类型数组做函数参数的一个问题#include<stdio.h>typede
- 关于js函数传入中文字符串参数的取值问题
- 关于JAVA调用ORACLE存储过程时,传入动态参数作为in语句条件的问题
- 关于连接字符串中IMEX参数的一个问题
- 关于List<E>.addAll(Collection<? extends E> collection)传入参数null
- javascript正则表达式中的一个奇葩问题 有关于参数g
- 关于mybatis 传入基本参数类型使用if test 判断出错的问题
- 遇到的一个关于NULL小问题,请大家帮忙看下,求个解释
- C++ 一个关于返回参数的问题
- 一个关于参数传递的问题
- 在Android中调用KSOAP2库访问webservice服务出现的服务端传入参数为null的问题解决
- 关于AJAX.net的一个问题:回发或回调参数无效!
- 参数读取一个关于java.net.Socket的超时的问题
- 关于连接字符串中IMEX参数的一个问题
- 很奇怪的一个问题,是关于sql参数化和传where in 参数的迷惑.请大伙给讲讲吧...小弟很迷糊现在.各位园友,拉兄弟一把!!
- 关于在打开游标之前修改传入游标where的参数问题
- 一个参数问题 关于动态和静态