2009-11-04 4 views
2

Может ли генерация Java-гнезд? Следующее дает мне ошибку в Eclipse:Java: Вложенные дженерики?

ArrayList<ArrayList<Integer>> numSetSet = ArrayList<ArrayList<Integer>>(); 

ошибка:

Syntax error on token "(", Expression expected after this token

+2

Ну теперь есть пример сообщения об ошибке компилятора ужасны! –

+2

Основной синтаксис FAIL. Вернемся в автошколу, Сонни! – Bombe

+2

Лучше сделать: Список <Список > numSetSet = новый ArrayList <Список >(); И если это набор, почему вы используете списки? – starblue

ответ

22

Вы забыли слово new.

+0

WOW это становится слишком поздно. Благодарю. –

7

Это должно быть:

ArrayList<ArrayList<Integer>> numSetSet = new ArrayList<ArrayList<Integer>>(); 

Или еще лучше:

List<List<Integer>> numListList = new ArrayList<List<Integer>>(); 
+0

На самом деле, вы не можете быть вложенными Абстрактные типы, по-видимому: 'List > numSetSet = новый ArrayList >();' –

+2

@Rosarch: 'List <Список > numListList = новый ArrayList <Список >(); 'просто компилируется на моей машине. – Asaph

+0

Второе решение может быть не лучше. Во втором решении любой список может быть помещен в основной список, который может быть не таким, каким вы хотите. На самом деле вы можете поместить как ArrayList, так и LinkedList в основной список. Это может быть плохо, но может и не быть тем, чего вы хотите. – fastcodejava

1

Для тех, кто пришел в этот вопрос через Google, Да Дженерики могут быть вложенными. И другие ответы - хорошие примеры этого.

1

И вот несколько немного сложная техника программирования шаблонов Java, я сомневаюсь, сколько людей раньше использовали это в Java.
Это способ избежать кастинга.

public static <T> T doSomething(String... args) 

Это способ ограничить тип аргумента с помощью подстановки.

public void draw(List<? extends Shape> shape) { 
    // rest of the code is the same 
} 

вы можете получить больше образцов на веб-сайте компании Sun:
http://java.sun.com/developer/technicalArticles/J2SE/generics/

1

Вы забыли 'новый' ключевое слово, как в код ниже:

ArrayList < ArrayList < Integer >> numSetSet = новый ArrayList < ArrayList < Целое число >>();

Вы также можете использовать карты вместе со списками для вложенных Дженерики, как показано на Java 5 (J2SE 5.0/JDK 1.5) New Features with Examples

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