2014-09-25 41 views
0
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方法上遇到错误,为什么?

+1

您认为错误的含义是什么?它可能意味着什么? – 2014-09-25 14:09:11

+0

如何定义方法.add,并且addFirst不是?这可能不是一个高级问题,但我在这里错过了一些东西,我真的没有想法。 – Dimoff 2014-09-25 14:10:50

+1

你在做假设。不要这样做。参考javadoc。 – 2014-09-25 14:11:45

回答

2

你的引用类型是List<T>接口,不申报任何addFirst方法。

你可以明确地设置参考类型LinkedList<String>

LinkedList<String> list = new LinkedList<String>(
       Arrays.asList(stuff)); 

或者你可以施放:

((LinkedList<String>)list).addFirst("first"); 

第一个方法是首选。

铸造稍微更“危险”,因为它假定您的参考没有被分配一个新的值。

例如,如果您在上述两个语句之间指定了listnew ArrayList<String>();,那么在运行时会得到ClassCastException

+0

如果照你说的那样做,我得到一个LinkedList类型不是通用的;它无法使用LinkedList类型的参数进行参数化。 – Dimoff 2014-09-25 14:37:13

+0

@nosille没有意义。检查你的进口。 'java.util.LinkedList' **是一个泛型类型。 – Mena 2014-09-25 14:40:59

1

方法addFirst存在于类LinkedList上,而不是在接口List上。

这里:

List<String> list = //whatever 

list被视为List,而不是一个LinkedList

将其更改为:

LinkedList<String> list = //whatever 
0

LinkedList实现两个接口:ListDeque。 方法addFirstDeque接口中声明。

Deque list = new LinkedList<Number>(); 
list.addFirst(3); 
相关问题