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

java中重载,求指点
package com.wonders.user;
import java.util.Vector;
public class Test {
class A{}
class B{}
public boolean getH(Vector<A> a){ //这行报错 duplicate method getH(Vector<Test.A>) in type Test
return false;
}
public boolean getH(Vector<B> a){ //这行报错 duplicate method getH(Vector<Test.B>) in type Test
return false;
}
public static void main(String[] args) {
System.out.println("KKKKKKKKK");
}
}


------解决方案--------------------
不要把参数类型和泛型混为一谈。
楼主上述两个方法,参数都是集合类型。
虽然集合的元素不相同,但是,都是集合类型。
这好比,参数都是整形,虽然是不同的整数。
------解决方案--------------------
重载的时候,方法名要一样,但是参数类型和个数不一样,返回值类型可以相同也可以不相同。
------解决方案--------------------
估计是泛型消除,就是泛型被编译以后就不是泛型了,比如
Vector<A>和Vector<B>编译以后都变成Vector了。
------解决方案--------------------
因为楼主的参数都是Vector 虽然泛型不同 丹是编译器只认Vector
------解决方案--------------------
JAVA的泛型是伪泛型,它不同于C#。JAVA在前期编译后会擦除了泛型,就是说你Vector<A>和Vector<B>在第一次编译的过程中的泛型变没了