2014-01-07 5 views
1

У меня есть следующий код:Как назначить ArrayList списку?

import java.util.*; 

public class hello { 
    public static void main(String[] args) { 
    Collection c = new ArrayList<Integer>(); 
    List l = new ArrayList<String>(); 
    } 
} 

И получаю ошибку в строке "Список л":

hello.java:6: error: incompatible types 
    List l = new ArrayList<String>(); 
      ^
    required: List 
    found: ArrayList<String> 
1 error 

Я использую OpenJDK 1.7:

java version "1.7.0_25" 
OpenJDK Runtime Environment (IcedTea 2.3.12) (7u25-2.3.12-4ubuntu3) 
OpenJDK 64-Bit Server VM (build 23.7-b01, mixed mode) 

Edit: Когда я использую List<String>, это происходит:

hello.java:6: error: type List does not take parameters 
    List<String> l = new ArrayList<String>(); 
     ^
1 error 
+1

Список л = new ArrayList (); – TheLostMind

+0

Не забудьте сопоставить дженерики, если вы их используете. –

+1

Какую версию Java вы используете? Я просто получаю предупреждение с Java 7. – user2336315

ответ

5

Я проверил эту линию с моим OpenJDK javac:

List l = new ArrayList<String>(); 

Он компилируется без каких-либо жалоб на всех.

Основываясь на второй ошибке («List не принимает никаких аргументов типа»), я думаю, что у вас есть либо List типа, определенный в том же пакете, и он берет верх над типом JDK, или вы используете больше импорта заявления, которые вы не показали, такие как

import java.awt.*; 

, где этот пакет содержит List виджет.

+0

Спасибо, был фрагмент List.class из другого эксперимента. Я удалил его, чем он работал. – math

+0

@math Не забудьте отметить вопрос «решено». – Radiodef

+0

Да, есть 2-минутный барьер и дополнительный кофе-брейк: D – math

0

С теми же операторами импорта введите код ниже и посмотрите, какой класс списка вы импортируете.

List l; 
System.out.println(l.getClass().getName()); 

Также может быть Список класс определяется как встраиваемого в том же исходном файле или другого исходного файла Java, как следующим образом: В этом случае будет использоваться этот класс:

package test; 

import java.util.*; //Implicitly imports java.util.list 

class Test { 
    List list;  //Not java.util.List type but test.List type 
    System.out.println(List.class.getName()); //prints test.List 
} 

class List {} //Class defined as inline in the same source file 
Смежные вопросы