我在.addFirst方法上遇到错误,为什么?
问题描述:
import javax.swing.*;
import java.util.*;
import java.awt.*;
public class ConverAryToList {
public static void main(String[] args) {
// TODO Auto-generated method stub
String[] stuff = { "people ", "watermelon ", "melons ", "fudge " };
List<String> list = new java.util.LinkedList<String>(
Arrays.asList(stuff));
list.add("pumpkin");
list.addFirst("first");
stuff = list.toArray(new String[list.size()]);
for (String x : stuff)
System.out.printf("%s", x);
}
}
这是一个添加元素到列表的简单练习。 On list.addFirst我得到:方法addFirst(String)对于类型列表未定义。我哪里做错了?我在.addFirst方法上遇到错误,为什么?
答
你的引用类型是List<T>
接口,不申报任何addFirst
方法。
你可以明确地设置参考类型LinkedList<String>
:
LinkedList<String> list = new LinkedList<String>(
Arrays.asList(stuff));
或者你可以施放:
((LinkedList<String>)list).addFirst("first");
第一个方法是首选。
铸造稍微更“危险”,因为它假定您的参考没有被分配一个新的值。
例如,如果您在上述两个语句之间指定了list
到new ArrayList<String>();
,那么在运行时会得到ClassCastException
。
答
方法addFirst
存在于类LinkedList
上,而不是在接口List
上。
这里:
List<String> list = //whatever
list
被视为List
,而不是一个LinkedList
将其更改为:
LinkedList<String> list = //whatever
答
LinkedList
实现两个接口:List
和Deque
。 方法addFirst
在Deque
接口中声明。
Deque list = new LinkedList<Number>();
list.addFirst(3);
您认为错误的含义是什么?它可能意味着什么? – 2014-09-25 14:09:11
如何定义方法.add,并且addFirst不是?这可能不是一个高级问题,但我在这里错过了一些东西,我真的没有想法。 – Dimoff 2014-09-25 14:10:50
你在做假设。不要这样做。参考javadoc。 – 2014-09-25 14:11:45