日期:2014-05-20  浏览次数:20668 次

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死忠),不过原因是编译器,不是语法本身