Java: вложенные дженерики?
Может ли Java вкладывать дженерики? Следующее дает мне ошибку в Eclipse:
ArrayList<ArrayList<Integer>> numSetSet = ArrayList<ArrayList<Integer>>();
Ошибка:
Syntax error on token "(", Expression expected after this token
5 ответов
Которые должны быть:
ArrayList<ArrayList<Integer>> numSetSet = new ArrayList<ArrayList<Integer>>();
Или даже лучше:
List<List<Integer>> numListList = new ArrayList<List<Integer>>();
Для тех, кто входит в этот вопрос через Google, да Generics может быть вложенным. И другие ответы являются хорошими примерами этого.
Вы забыли новое ключевое слово, как показано ниже:
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/