如图,当定义好了locked方法后,new出新的lock类对象test,调用locked方法时,如果方法定义中有locked(String type)时,test(null)调用该方法,打印出如下结果:
public class Lock { public void locked(String type){ System.out.println("调用的是locked(Str)方法"); } public void locked(int type){ System.out.println("调用的是locked(int)方法"); } public void locked(){ System.out.println("调用的是locked()方法"); } public static void main(String[] args){ Lock test=new Lock(); test.locked(); test.locked(2); test.locked("2"); test.locked(null); }}
运行结果
调用的是locked()方法调用的是locked(int)方法调用的是locked(Str)方法调用的是locked(Str)方法进程已结束,退出代码0
但当我注释掉String方法后,如图,运行编译未通过。
修改后代码如下:
public class Lock { /**public void locked(String type){ System.out.println("调用的是locked(Str)方法"); }*/ public void locked(int type){ System.out.println("调用的是locked(int)方法"); } public void locked(){ System.out.println("调用的是locked()方法"); } public static void main(String[] args){ Lock test=new Lock(); test.locked(); test.locked(2); //test.locked("2"); test.locked(null); }}
运行结果及报错内容
java: 不兼容的类型: <nulltype>无法转换为int
请问是否代表null做参数的调用就是默认String类型的形参?如果用null作为参数调用的话是调用的那种形式的对应方法呢?希望各位不吝赐教