Java: вложенные дженерики?

Может ли Java вкладывать дженерики? Следующее дает мне ошибку в Eclipse:

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

Ошибка:

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

5 ответов

Решение

Ты забыл слово new,

Которые должны быть:

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

Или даже лучше:

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

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

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

ArrayList> numSetSet = new ArrayList> ();

Вы также можете использовать Карты вместе со списками для вложенных обобщений, как показано в Java 5 (J2SE 5.0/JDK 1.5) Новые функции с примерами

И вот немного хитрая техника в программировании шаблонов 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/

Другие вопросы по тегам