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");
}
}

解决方案 »

  1.   

    估计是泛型消除,就是泛型被编译以后就不是泛型了,比如
    Vector<A>和Vector<B>编译以后都变成Vector了。
      

  2.   

    因为楼主的参数都是Vector  虽然泛型不同  丹是编译器只认Vector
      

  3.   

    JAVA的泛型是伪泛型,它不同于C#。JAVA在前期编译后会擦除了泛型,就是说你Vector<A>和Vector<B>在第一次编译的过程中的泛型变没了
      

  4.   

    不用泛型调用时getH(Vector)
    就不知道该调用哪个方法了
      

  5.   

    JAVA的泛型是伪泛型,它不同于C#。JAVA在前期编译后会擦除了泛型,就是说你Vector<A>和Vector<B>在第一次编译的过程中的泛型变没了
    这是泛型消除,就是泛型被编译以后就不是泛型了,比如
    Vector<A>和Vector<B>编译以后都变成Vector了
    所以编译器就认为参数是同类型同个数的。所以报错。
    不用泛型调用时getH(Vector)
    就不知道该调用哪个方法了吗???????????????解决办法::::可以不要重载了,定义成两个方法不就好了;