当前位置: 代码迷 >> J2EE >> List的泛型有关问题
  详细解决方案

List的泛型有关问题

热度:15   发布时间:2016-04-22 00:59:13.0
List的泛型问题
在编码中遇到一个问题
A extends B.
把List<A>作为参数调用参数类型声明为List<B>的方法,编译器报错。
按照我的理解,不应该出现这样的情况啊,莫非编译器进行泛型类型检查时,没有检查继承?

------解决方案--------------------

List<B> a = new ArrayList<B>();
C.doSomething(a);
你可以这样啊,这个 a一样的可以增加类型为A的对象,而且doSomething要求的参数也只是List<B>,再者泛刑是指的List<T>,这个T啊,并不是指List本身,List只是装泛型对象的一个容器。如果你doSomething可以定义为doSomething(List<?> list),如果你确实需要只有B及B的子类才能调用此方法,你可以定义为
 <T extends B> void doSomething(List<T> args)
------解决方案--------------------
Java code
import java.util.List ;import java.util.ArrayList ;class B{}class A extends B{}public class C{    public static void doSomething(List<? extends B> args){    }    public static void main(String[] args){        List<A> a = new ArrayList<A>();        C.doSomething(a);    }}
  相关解决方案