void method1(List <? extends A> para)

解决方案 »

  1.   

    List<这里的类型应该必须一致的>在你List<这里指定的类型随便你(泛型),但是指定后传进来的就必须是这个类型的> list = new ArrayList<>();
      

  2.   

       泛型是提供给javac编译器使用的,可以限定集合中的输入类型,让编译器挡住源程序中的非法输入,编译器编译带类型说明的集合时会去除掉“类型”信息,使程序运行效率不受影响。对于参数化的泛型类型,getClass()方法的返回值和原始类型完全一样。
       由于编译生成的字节码会去掉泛型的类型信息,只要能跳过编译器,就可以往某个泛型集合中加入其它类型的数据,例如,用反射得到集合,再调用其方法即可。
      

  3.   

    一个Class A, implements了接口B. 
    这样做就可以了,如果A与B没有继承或实现接口关系,实现进行时会出错
    List <A> a;
    method1((List)a);
      

  4.   

      可以这么写
       public interface B <T>(){
       public void method1(List<T> para);
    }  public class A implements B<>(){//<>放你的具体实体就Ok了
      public void method1(List<> para){}
    }
     List <B> para//你这个接口B是没有意义的。。