多态问题 因为你的 list 定义的是 List<Integer> 类型,编译器只认它是 List,而不是 LinkedList 原因么,很简单,因为 LinkedList 是运行时类型,也就是说运行时才能确定它是哪种类型。而运行过程中,可能发生很多事,虽然你把 LinkedList 赋值给 list,但编译器不会假设你会把其它 List 的子类型重新赋值给 list 这个变量。 比如 List<Integer> list = new LinkedList<Integer>(); ...... list = new ArrayList<Integer>(); // 重新赋值,list 不再是 LinkedList<Integer>类型 ...... list = getMyList(); // 重新赋值,谁也无法确定 getMyList 方法会返回哪个子类型,只有运行时才知道。 list.poll(); // 编译器只能确定它是 List,至于是 LinkedList 还是 ArrayList,或者哪个子类型,无法确定
因为你接受linkedlist对象是用它的父对象list来接收的,java基础中有一个继承,讲了父类中有的方法子类中肯定会有,但是子类中有的方法父类中不一定会有,所有如果你想要调用poll方法,需要先将list对象转化成linkedlist。
62,620
社区成员
307,251
社区内容
加载中
试试用AI创作助手写篇文章吧