建议5:别让null值和空值威胁到变长方法
public class SuggestFive{
public void methodA(String str,Integer... is){
}
public void methodA(String str,String... strs){
}
public static void main(String[] args) {
SuggestFive suggestFive= new SuggestFive();
suggestFive.methodA("China", 0);
suggestFive.methodA("China", "People");
suggestFive.methodA("China");
suggestFive.methodA("China",null);
}
}
上面的代码有两处编译不过,suggestFive.methodA("China")和suggestFive.methodA("China",null)。提示方法模糊不清,编译器不知道调用哪一个。
对于methodA("China")方法,根据实参"China"(String类型),两个方法都符合形参格式,编译器不知道该调用哪一个,于是报错。
对于methodA("China",null)方法,直接量null是没有类型的,虽然两个methodA方法都符合调用请求,但是不知道调用哪一个,于是报错了。
应该如下修改:
String[] strs = null;
suggestFive.methodA("China", strs);
也就是说让编译器知道这个null值是String类型的。
网友评论