null会优先转换为什么类型
比如 :void asd(String){...}
void asd(Object){...}
在程序中调用asd(null);就会直接调用第一个 ,那么 null对于所有其他类型的转换优先级是怎么的,高手请指点 谢谢!
比如 :void asd(String){...}
void asd(Object){...}
在程序中调用asd(null);就会直接调用第一个 ,那么 null对于所有其他类型的转换优先级是怎么的,高手请指点 谢谢!
比如这个例子中
void asd(String){...}
void asd(Object){...}
String是Object的子类,是更为具体化的类,调用方法时,null优先匹配String
例如:
asd((Object)null);
这样可以强制调用asd(Object)。而且就算出现六楼说的情况也不会出错。
对于asd(Object)和asd(String),当null的对象被调用的时候,此时Java虚拟机去寻找方法的方式,是先找继承最深的子类,然后依次往上找到父类。首先找到的是asd(String),这时,虚拟机认为这个String类型是为空,这时很明显他调用的方法当然是asd(String).
接下来我们可以做个测试,假设有一个Father类,他有一个Child子类,这时我们就有三个重载方法:
asd(Object)
asd(Father)
asd(Child)
这时我们调用asd(null),通过Debug或者输出语句我们可以看到,Java是调用了asd(Child)。
这个是Java访问重载方法的一种机制。
比如说.你有
void f(float a)
void f(double a)
调用的时候你f(1) 他会去执行float的那个版本而不是double
像short,int,long,char倒好办。
对字符串就近原则就不是很清楚
望高手解答一下