public class App {
public static void main(String[] args) {
test(new ArrayList<String>());
test(new ArrayList<Integer>());
}
public static void test(List<String> strings, String... a) {
System.out.println("strings");
}
public static void test(List<Integer> integers, Integer... a) {
System.out.println("integers");
}
}
群友讨论中学到的, 原因是不定参在编译后会自动带空参数, 如以上代码会被编译为:
public class App {
public App() {
}
public static void main(String[] args) {
test(new ArrayList(), (String[])());
test(new ArrayList(), (Integer[])());
}
public static void test(List<String> strings, String... a) {
System.out.println("strings");
}
public static void test(List<Integer> integers, Integer... a) {
System.out.println("integers");
}
}