建議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類型的。