对于方法重载来讲,如果在调用方法的时候,传入参数null对象,会出现怎样的结果呢?
下面就举个Sample:
1. 重载方法类:
2. 测试类:
1) 执行结果是什么呢?
2) 如果在类MethodReloader中添加一行:
结果是什么呢?
3) 如果在类MethodReloader中添加一行:
结果是什么呢?
1) Console输出结果是:String print out.
2) Compile error.
3) Console输出结果是:String print out.
结论:
关于方法重载,JVM总是在内存中去寻找参数类型和个数相等的方法去执行,但是当寻找多个方法时,先匹配所有类型的最小子类(如:Object是所有类的父类,即先匹配其它类),就调用该方法。如果发现有两个同等级类型的方法时候,在编译期间就出现Exception.
下面就举个Sample:
1. 重载方法类:
public class MethodReloader {
public void printObject(String str){
System.out.println("String print out");
}
public void printObject(Object obj){
System.out.println("Object Print out");
}
}
2. 测试类:
public class TestString {
/**
* @param args
*/
public static void main(String[] args)throws Exception {
try{
MethodReloader methodReloader = new MethodReloader();
methodReloader.printObject(null);
}catch(Exception ex){
ex.printStackTrace();
}
}
1) 执行结果是什么呢?
2) 如果在类MethodReloader中添加一行:
public void printObject(Double obj){
System.out.println("Double print out");
}
结果是什么呢?
3) 如果在类MethodReloader中添加一行:
public void printObject(double obj){
System.out.println("double print out");
}
结果是什么呢?
1) Console输出结果是:String print out.
2) Compile error.
3) Console输出结果是:String print out.
结论:
关于方法重载,JVM总是在内存中去寻找参数类型和个数相等的方法去执行,但是当寻找多个方法时,先匹配所有类型的最小子类(如:Object是所有类的父类,即先匹配其它类),就调用该方法。如果发现有两个同等级类型的方法时候,在编译期间就出现Exception.