import java.util.*;
class Parent {
  public   void m1(List<String> list)
  {
  System.out.println("父类"); 
  }
}
class Baby extends Parent {
  public   void  m1(List<Integer> list)
  {
  System.out.println("子类"); 
  }
 
}
class OverrideTest {   public static void main(String[] args) {
 
}
}
方法m1的签名的擦除相同但是不能覆写,求解答

解决方案 »

  1.   

    虚拟机中没有泛型,只有普通的类和方法,加载时,所有的类型参数都用它们的限定类型替换,两个方法擦除后都是public void m1(List<Object> list),当然不能覆盖了。
      

  2.   

    应为你的参数都是 list集合的,那参数是一样的,你只是改了加入集合里面数据的类型,
     如果你把子类的参数改成Set<Integer> set 就可以 了