2010-02-28 2 views
5

У меня есть следующий код:Ошибка компиляции при создании экземпляра нового ArrayList

import java.util.*; 
import java.io.*; 
import java.util.*; 
import java.io.*; 

public class ShufflingListAndArray 
{ 
    public static void main(String[] args) throws IOException 
    { 
    List <String> services = new ArrayList<String> (
    Arrays.asList("COMPUTER", "DATA", "PRINTER"));//here I have used List <String> services=new ArrayList<String>(Arrays.asList("COMPUTER", "DATA", "PRINTER"));// followed by next statement Satring s=Services.get(rnd.nextInt(Services.size())); 

    String s = services.get(rnd.nextInt(services.size())); 

    Collections.shuffle(list); 
    //Collections.sort(list); 
    System.out.println("List sorting :"+ list); 
    } 
} 

И когда я скомпилировать эту программу, я получаю следующее сообщение об ошибке:

C:\>javac ShufflingListAndArray.java 
ShufflingListAndArray.java:6: '(' or '[' expected 
    List<String> services = new ArrayList<String>(
             ^
1 error 

Может кто-то помочь мне разрешить эту ошибку?

+0

Какую версию Java вы используете? Дженерики поддерживаются только с Java 5 ... – netzwerg

+0

Интересно, как это должно компилироваться? Или это просто сволочь вашего кода? В первую очередь rnd не объявляется, и список тоже не объявлен?! – kukudas

ответ

0

Я смутно помню, чтобы addAll в список вместо того, чтобы передать список в ArrayLists конструктор

2

Замените эти первые пару строк вашей основной функции с этим:

List<String> services = Arrays.asList("COMPUTER", "DATA", "PRINTER"); 

Следуя примеру в Arrays.asList documentation ,

(У вас также есть двойной import java.util.*;)

редактировать:

Учитывая, другие ответы и комментарий, сделанные на мой ответ, ваш код кажется правильным, и проблема, скорее всего, что вы необходимо скомпилировать его с помощью Java 5 (или более новой), которая представляет собой версию, когда были введены Generics. Если вы должны запустить его на 1.4.2 или любой другой версии, удалите экземпляры <String>, и вам будет хорошо идти.

+1

Если вам может понадобиться изменить этот список позже, он выкинет исключение UnsupportedOperationException, потому что список, возвращаемый из массива Array.asList, не поддается изменению. Чтобы решить эту проблему, скопируйте список в ArrayList (или LinkedList или что-то еще) через «конструктор копирования», как в исходном вопросе, или addAll, как сказал mkoryak. – MatrixFrog

1

Вам нужен источник-источник 1,5 или -источник 1,6 Я думаю. Или еще лучше использовать IDE. Eclipse, NetBeans и IntelliJ - все бесплатно.

+1

Я бы не схватил IDE, что скоро. Сначала изучите основные понятия правильно :) – BalusC

Смежные вопросы