import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;public class UserDao {

public List<? extends Object> getmyList(){
List<User> list1 = new ArrayList<User>();
list1.add(new User());
return list1;
}

public void remove(List<?> list){
System.out.println("---");
}

public static void main(String[] args) {
UserDao dao = new UserDao();
List<User> list1 = new ArrayList<User>();
dao.remove(list1);
List<User> list = dao.getmyList();
System.out.println(list1);
}
} 我现在在编写一个基类,在一个方法返回的List泛型时,我不想直接指定类型,然后用任意的类型就可以了,但是现在问题来了,这个List<User> list = dao.getmyList(); 永远都是报编译错误。我开始以为是myeclipse的编译器的问题,但是我不管换JDK都不行,而且强行运行就会抛出异常
Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
Type mismatch: cannot convert from List<capture#1-of ? extends Object> to List<User>
 
不知道是个什么样的原因,我要如何做才行呢?

解决方案 »

  1.   

    List<User> list = dao.getmyList();getMyList()的返回值范围比List<User>大哦
      

  2.   


            List<? extends Object> list = dao.getmyList();这样写也行哦
      

  3.   

    List<User> b = (List<User>)dao.getmyList();
    强转应该没问题的吧
      

  4.   

    dao.getmyList();返回的是List<Object>,怎么可以赋值给List<User>。
      

  5.   

    List<User> list = (List<User>) dao.getmyList();