带有泛型和 varargs 的模棱两可的重载 java 方法
2022-09-01 00:13:05
我试图理解java如何处理函数调用中的歧义。在下面的代码中,对 的调用是不明确的,但不是!!!.method
method2
我觉得两者都是模棱两可的,但是当我注释掉对的调用时,为什么会编译呢?为什么没有模棱两可呢?method
method2
public class A {
public static <K> List<K> method(final K arg, final Object... otherArgs) {
System.out.println("I'm in one");
return new ArrayList<K>();
}
public static <K> List<K> method(final Object... otherArgs) {
System.out.println("I'm in two");
return new ArrayList<K>();
}
public static <K, V> Map<K, V> method2(final K k0, final V v0, final Object... keysAndValues) {
System.out.println("I'm in one");
return new HashMap<K,V> ();
}
public static <K, V> Map<K, V> method2(final Object... keysAndValues) {
System.out.println("I'm in two");
return new HashMap<K,V>();
}
public static void main(String[] args) {
Map<String, Integer> c = A.method2( "ACD", new Integer(4), "DFAD" );
//List<Integer> d = A.method(1, "2", 3 );
}
}
编辑:这在评论中出现:到目前为止,许多IDE报告都是模棱两可的 - IntelliJ和Netbeans。但是,它从命令行/maven编译得很好。