以下代码给出了错误“重复方法”的编译错误
static int test(int i){
return 1;
}
static String test(int i){
return "abc";
}
这是意料之中的,因为两个重载方法都具有相同的签名,并且仅在返回类型上有所不同。
但是下面的代码可以正常编译并发出警告:
static int test1(List<Integer> l){
return 1;
}
static String test1(List<String> l){
return "abc";
}
正如我们所知,Java 泛型适用于 Erasure,这意味着在字节码中,这两种方法具有完全相同的签名并且返回类型不同。
此外,令我惊讶的是,以下代码再次给出了编译错误:
static int test1(List<Integer> l){
return 1;
}
static String test1(List l){
return "abc";
}
尽管有重复的方法,第二个代码如何在没有任何编译错误的情况下正常工作?