我正在尝试使用Collections.sort方法和java.util.List创建一个按字母顺序排列列表的程序,错误是:1错误,发现了15个警告:
Error: java.util.List is abstract; cannot be instantiated
--------------
** Warnings **
--------------
Warning: unchecked call to add(E) as a member of the raw type java.util.List
Warning: unchecked method invocation: method sort in class java.util.Collections is applied to given types
required: java.util.List<T>
found: java.util.List
我的代码:
public static void preset(){
List words= new List();
words.add("apple");
words.add("country");
words.add("couch");
words.add("shoe");
words.add("school");
words.add("computer");
words.add("yesterday");
words.add("wowza");
words.add("happy");
words.add("tomorrow");
words.add("today");
words.add("research");
words.add("project");
Collections.sort(words);
} //end of method preset
答案 0 :(得分:1)
正如错误所说,List
是抽象的,你需要一些具体的实现。在您发布的案例中,ArrayList
会这样做。
另请注意,您使用List
作为原始类型;不要那样做(除非你在Java 5之前使用的是版本)。使用类型参数(此处为String
)对其进行参数化。
还有:不要将words
的声明更改为ArrayList
:List
足够好(通常),并保持不变,您可以更改稍后实施。
总结:
List<String> words= new ArrayList<String>();
或者如果使用Java 7:
List<String> words= new ArrayList<>();
答案 1 :(得分:0)
您无法实例化java.util.List
,但有些实现。喜欢(例如)java.util.ArrayList
。请注意,它们是Generic。
请修正以下内容:
List words= new List();
到
List<String> words= new ArrayList<String>();