java泛型重载的问题
有个问题非常疑惑:
下面这两个方法编译不通过,但是网上查询的资料都表示这两个方法是能通过编译的,求高手解释
public Integer test(ArrayList<Integer> al) {
return null;
}
public String test(ArrayList<String> al) {
return null;
}
------解决方案--------------------jdk1.5以后编译应该没有问题的。
这就是普通的泛型啊。
------解决方案--------------------这是可以通过的呢,普通的泛型使用...贴错误信息来看看...
------解决方案--------------------你用的是eclipse的编译器,还是JDK的?eclipse自带的可能会有问题。
泛型的信息是在编译期存在,运行期抹去的。
比如:test (new ArrayList<Integer>());
在编译的时候,某些聪明的编译器知道test指向的是哪个版本的test,就直接静态地把这个test调用指向正确的test函数。某些编译器会报错。我没用eclipse的编译器试过(intellij死忠),不过原因是编译器,不是语法本身