SlideShare a Scribd company logo
Generics в Java
Generics в Java

             1. Простые generic-и
1.List strList = new ArrayList();
2.strList.add("some text");
3.// ??!! O_o
4.strList.add(new Integer(0));
5.String str = (String)strList.get(0);
6.// ClassCastException
7.Integer i = (Integer)strList.get(0);
Generics в Java

                 1. Простые generic-и
1.List<String>  strList = new ArrayList<String>();
2.strList.add("some text");
3.strList.add(new Integer()); // сообщение об ошибке компилятора
4.String str = strList.get(0);
5.Integer i = strList.get(0); //сообщение об ошибке компилятора
Generics в Java

             1. Простые generic-и
1.class GenericList<E>{
2.     E getFirst() { ... }
3.     void add(E obj) { ... }
4.}

1.GenericList<String> genericList = new GenericList<String>();
Generics в Java
                  2. Generic-методы
1.public class CreateAnArrayList {
2.            public <T> void makeArrayList(T t) { // take an object of an
3.            // unknown type and use a
4.            // "T" to represent the type
5.               List<T> list = new ArrayList<T>(); // now we can create the
llist using "T"
6.               list.add(t);
7.            }
8.}


1.public void makeArrayList(Integer t) {
2.           List<Integer> list = new ArrayList<Integer>();
3.           list.add(t);
4.}
Generics в Java
                         2. Generic-методы
1.public class GenMethDemo {
2.// Determine if an object is in an array.
3.static <T> boolean isIn(T x, T[] y) {
4. for(int i=0; i < y.length; i++)
5. if(x.equals(y[i])) return true;
6. return false;
7.}
8.public static void main(String args[]) {
9. // Use isIn() on Integers.
10. Integer nums[] = { 1, 2, 3, 4, 5 };
11. if(isIn(2, nums))
12. System.out.println("2 is in nums");
13. // Use isIn() on Strings.
14. String strs[] = { "one", "two", "three", "four", "five" };
15. if(isIn("two", strs))
16. System.out.println("two is in strs");
17. // Opps! Won"t compile! Types must be compatible.
18. if(isIn("two", nums))
19. System.out.println("two is in strs");
20. }
21.}
Generics в Java

              3. Маски (wildcards)
•Предположим, у нас есть функция, которая находит ближайший к
точке Glyph из заданной коллекции. Glyph – это базовый тип, и может
иметься неограниченное количество потомков этого типа. Также
может иметься неограниченное количество коллекций, хранящих
элементы, тип которых соответствует одному из этих потомков.
Хотелось бы, чтобы функция могла работать со всеми подобными
коллекциями, и возвращала элемент, тип которого совпадал бы с
типом элемента коллекции, а не приводился к Glyph.
Generics в Java

                 3. Маски (wildcards)
1.<T> T findNearest(Collection<T> glyphs, int x, int y) { ... }

1.<T extends Glyph> T findNearest(Collection<T> glyphs, int x, int y) {...}
Generics в Java

                     3. Маски (wildcards)
class <T extends Glyph & MoveableGlyph> MoveableGlyphsContainter


static <T, V extends T> boolean isIn(T x, V[] y) {...}
Generics в Java

             3. Маски (wildcards)
1.public interface Box<T> {
2. public T get();
3. public void put(T element);
4.}

1.public void unbox(Box<?> box) {
2. System.out.println(box.get());//Так можно
3. box.put(new Object());//Так нельзя
4. box.put(box.get());//Так тоже нельзя
5. System.out.println(box.toString());//Так можно
6.}
Generics в Java
                      4. Хорошо и плохо
1.class FooEverythingDoer
2.{
3....
4.Map<String, String> getProperties(Foo foo) {...}
5.void putProperties(Foo foo, Map<String, String> properties) {...}
6.Map<Foo, Map<String, String>> getPropertiesBatch(Iterable<Foo> foos) {...}
7.Foo findByProperties(Map<String, String> partOfProperties) {...}
8....
9.}

1.class Properties extends Map<String,String> {
2. (constructors matching super here)
3.}

1.class FooEverythingDoer {
2. ...
3. Properties getProperties(Foo foo) {...}
4. void putProperties(Foo foo, Properties properties) {...}
5. Map<Foo, Properties> getPropertiesBatch(Iterable<Foo> foos) {...}
6. Foo findByProperties(Properties partOfProperties) {...}
7. ...
8.}
Generics в Java

                    4. Хорошо и плохо
1.   Map<Integer, List<String>> namesById = new HashMap<Integer, List<String>>();


1.public class CollectionFactory
2.{
3.public static <K,V> Map<K,V> newMap()
4.{
5. return new HashMap<K,V>();
6.}
7.}
8.import static CollectionUtils.newMap;
9.Map<Integer, List<String>> namesById = newMap();
Generics в Java
       5. Примеры
Java Generics: What it is and How to Implement it

More Related Content

What's hot

Алгоритмы поиска и сортировки
Алгоритмы  поиска и сортировкиАлгоритмы  поиска и сортировки
Алгоритмы поиска и сортировки
Unguryan Vitaliy
 
Discovering Lambdas in Java 8
Discovering Lambdas in Java 8Discovering Lambdas in Java 8
Discovering Lambdas in Java 8
Stfalcon Meetups
 
3. java lecture classes
3. java lecture classes3. java lecture classes
3. java lecture classesMERA_school
 
Android - 01 - Java Basics
Android - 01 - Java BasicsAndroid - 01 - Java Basics
Android - 01 - Java BasicsNoveo
 
Java. Строки. Класс String.
Java. Строки. Класс String.Java. Строки. Класс String.
Java. Строки. Класс String.
Unguryan Vitaliy
 
Android - 03 - Multithreading, Collections
Android - 03 - Multithreading, CollectionsAndroid - 03 - Multithreading, Collections
Android - 03 - Multithreading, CollectionsNoveo
 
Java осень 2013 лекция 2
Java осень 2013 лекция 2Java осень 2013 лекция 2
Java осень 2013 лекция 2Technopark
 
основы Java переменные, циклы
основы Java   переменные, циклыосновы Java   переменные, циклы
основы Java переменные, циклы
Sergey Nemchinsky
 
Java. Интерфейс Map - ассоциативные массивы.
Java. Интерфейс Map - ассоциативные массивы.Java. Интерфейс Map - ассоциативные массивы.
Java. Интерфейс Map - ассоциативные массивы.
Unguryan Vitaliy
 
Лекция 8. Итераторы, генераторы и модуль itertools.
 Лекция 8. Итераторы, генераторы и модуль itertools. Лекция 8. Итераторы, генераторы и модуль itertools.
Лекция 8. Итераторы, генераторы и модуль itertools.
Roman Brovko
 

What's hot (10)

Алгоритмы поиска и сортировки
Алгоритмы  поиска и сортировкиАлгоритмы  поиска и сортировки
Алгоритмы поиска и сортировки
 
Discovering Lambdas in Java 8
Discovering Lambdas in Java 8Discovering Lambdas in Java 8
Discovering Lambdas in Java 8
 
3. java lecture classes
3. java lecture classes3. java lecture classes
3. java lecture classes
 
Android - 01 - Java Basics
Android - 01 - Java BasicsAndroid - 01 - Java Basics
Android - 01 - Java Basics
 
Java. Строки. Класс String.
Java. Строки. Класс String.Java. Строки. Класс String.
Java. Строки. Класс String.
 
Android - 03 - Multithreading, Collections
Android - 03 - Multithreading, CollectionsAndroid - 03 - Multithreading, Collections
Android - 03 - Multithreading, Collections
 
Java осень 2013 лекция 2
Java осень 2013 лекция 2Java осень 2013 лекция 2
Java осень 2013 лекция 2
 
основы Java переменные, циклы
основы Java   переменные, циклыосновы Java   переменные, циклы
основы Java переменные, циклы
 
Java. Интерфейс Map - ассоциативные массивы.
Java. Интерфейс Map - ассоциативные массивы.Java. Интерфейс Map - ассоциативные массивы.
Java. Интерфейс Map - ассоциативные массивы.
 
Лекция 8. Итераторы, генераторы и модуль itertools.
 Лекция 8. Итераторы, генераторы и модуль itertools. Лекция 8. Итераторы, генераторы и модуль itertools.
Лекция 8. Итераторы, генераторы и модуль itertools.
 

Viewers also liked

L7 data model and dbms architecture
L7  data model and dbms architectureL7  data model and dbms architecture
L7 data model and dbms architectureRushdi Shams
 
On Parameterised Types and Java Generics
On Parameterised Types and Java GenericsOn Parameterised Types and Java Generics
On Parameterised Types and Java Generics
Yann-Gaël Guéhéneuc
 
DBMS OF DATA MODEL Deepika 2
DBMS OF DATA MODEL  Deepika 2DBMS OF DATA MODEL  Deepika 2
DBMS OF DATA MODEL Deepika 2
Rai Saheb Bhanwar Singh College Nasrullaganj
 
Java Generics: a deep dive
Java Generics: a deep diveJava Generics: a deep dive
Java Generics: a deep dive
Bryan Basham
 
Java Generics Introduction - Syntax Advantages and Pitfalls
Java Generics Introduction - Syntax Advantages and PitfallsJava Generics Introduction - Syntax Advantages and Pitfalls
Java Generics Introduction - Syntax Advantages and Pitfalls
Rakesh Waghela
 
Java Generics - by Example
Java Generics - by ExampleJava Generics - by Example
Java Generics - by Example
CodeOps Technologies LLP
 
Правила хорошего SEO тона в Frontend разработке
Правила хорошего SEO тона в Frontend разработкеПравила хорошего SEO тона в Frontend разработке
Правила хорошего SEO тона в Frontend разработкеEcommerce Solution Provider SysIQ
 
Гибкость и Структурированность Oбъектно Oриентированноя CSS
Гибкость и Структурированность Oбъектно Oриентированноя CSSГибкость и Структурированность Oбъектно Oриентированноя CSS
Гибкость и Структурированность Oбъектно Oриентированноя CSS
Ecommerce Solution Provider SysIQ
 
Mastering Java ByteCode
Mastering Java ByteCodeMastering Java ByteCode
Mastering Java ByteCode
Ecommerce Solution Provider SysIQ
 

Viewers also liked (20)

Interactive web prototyping
Interactive web prototypingInteractive web prototyping
Interactive web prototyping
 
Understanding Annotations in Java
Understanding Annotations in JavaUnderstanding Annotations in Java
Understanding Annotations in Java
 
Java generics final
Java generics finalJava generics final
Java generics final
 
L7 data model and dbms architecture
L7  data model and dbms architectureL7  data model and dbms architecture
L7 data model and dbms architecture
 
On Parameterised Types and Java Generics
On Parameterised Types and Java GenericsOn Parameterised Types and Java Generics
On Parameterised Types and Java Generics
 
DBMS OF DATA MODEL Deepika 2
DBMS OF DATA MODEL  Deepika 2DBMS OF DATA MODEL  Deepika 2
DBMS OF DATA MODEL Deepika 2
 
Java Generics: a deep dive
Java Generics: a deep diveJava Generics: a deep dive
Java Generics: a deep dive
 
Java Generics Introduction - Syntax Advantages and Pitfalls
Java Generics Introduction - Syntax Advantages and PitfallsJava Generics Introduction - Syntax Advantages and Pitfalls
Java Generics Introduction - Syntax Advantages and Pitfalls
 
Java Annotation
Java AnnotationJava Annotation
Java Annotation
 
Java Generics - by Example
Java Generics - by ExampleJava Generics - by Example
Java Generics - by Example
 
External Widgets Performance
External Widgets PerformanceExternal Widgets Performance
External Widgets Performance
 
Going global
Going globalGoing global
Going global
 
All things php
All things phpAll things php
All things php
 
Management and Communications (IPAA)
Management and Communications (IPAA)Management and Communications (IPAA)
Management and Communications (IPAA)
 
Unexpected achievements 2013
Unexpected achievements 2013Unexpected achievements 2013
Unexpected achievements 2013
 
Правила хорошего SEO тона в Frontend разработке
Правила хорошего SEO тона в Frontend разработкеПравила хорошего SEO тона в Frontend разработке
Правила хорошего SEO тона в Frontend разработке
 
Гибкость и Структурированность Oбъектно Oриентированноя CSS
Гибкость и Структурированность Oбъектно Oриентированноя CSSГибкость и Структурированность Oбъектно Oриентированноя CSS
Гибкость и Структурированность Oбъектно Oриентированноя CSS
 
Getting to know magento
Getting to know magentoGetting to know magento
Getting to know magento
 
QA evolution, in pictures
QA evolution, in picturesQA evolution, in pictures
QA evolution, in pictures
 
Mastering Java ByteCode
Mastering Java ByteCodeMastering Java ByteCode
Mastering Java ByteCode
 

Similar to Java Generics: What it is and How to Implement it

[JAM 1.1] Clean Code (Paul Malikov)
[JAM 1.1] Clean Code (Paul Malikov)[JAM 1.1] Clean Code (Paul Malikov)
[JAM 1.1] Clean Code (Paul Malikov)
Evgeny Kaziak
 
Generics
GenericsGenerics
Вещи в Java, о которых вы (возможно) не знали
Вещи в Java, о которых вы (возможно) не зналиВещи в Java, о которых вы (возможно) не знали
Вещи в Java, о которых вы (возможно) не знали
Zheka Kozlov
 
Programming Java - Lecture 02 - Objects - Lavrentyev Fedor
Programming Java - Lecture 02 - Objects - Lavrentyev FedorProgramming Java - Lecture 02 - Objects - Lavrentyev Fedor
Programming Java - Lecture 02 - Objects - Lavrentyev Fedor
Fedor Lavrentyev
 
Groovy и Grails. Быстро и обо всём
Groovy и Grails. Быстро и обо всёмGroovy и Grails. Быстро и обо всём
Groovy и Grails. Быстро и обо всём
Ruslan Balkin
 
Java осень 2014 занятие 2
Java осень 2014 занятие 2Java осень 2014 занятие 2
Java осень 2014 занятие 2
Technopark
 
Lec 4
Lec 4Lec 4
Tricky Java Generics
Tricky Java GenericsTricky Java Generics
Tricky Java Generics
Alexander Matorin
 
Лекция 3 Элементарные структуры данных Часть 1
Лекция 3 Элементарные структуры данных Часть 1Лекция 3 Элементарные структуры данных Часть 1
Лекция 3 Элементарные структуры данных Часть 1
simple_people
 
XML Magic
XML MagicXML Magic
XML Magic
Igor Khotin
 
Oop java.generics
Oop java.genericsOop java.generics
Oop java.generics
muqaddas_m
 
Thread
ThreadThread
Scala and LiftWeb presentation (Russian)
Scala and LiftWeb presentation (Russian)Scala and LiftWeb presentation (Russian)
Scala and LiftWeb presentation (Russian)Dmitry Stropalov
 
Lambdas in java 8
Lambdas in java 8Lambdas in java 8
Lambdas in java 8
chashnikov
 
Lec 3
Lec 3Lec 3
Основы языка Питон: типы данных, операторы
Основы языка Питон: типы данных, операторыОсновы языка Питон: типы данных, операторы
Основы языка Питон: типы данных, операторы
Theoretical mechanics department
 
C++ Базовый. Занятие 05.
C++ Базовый. Занятие 05.C++ Базовый. Занятие 05.
C++ Базовый. Занятие 05.
Igor Shkulipa
 
Lec 2
Lec 2Lec 2

Similar to Java Generics: What it is and How to Implement it (20)

[JAM 1.1] Clean Code (Paul Malikov)
[JAM 1.1] Clean Code (Paul Malikov)[JAM 1.1] Clean Code (Paul Malikov)
[JAM 1.1] Clean Code (Paul Malikov)
 
Generics
GenericsGenerics
Generics
 
Вещи в Java, о которых вы (возможно) не знали
Вещи в Java, о которых вы (возможно) не зналиВещи в Java, о которых вы (возможно) не знали
Вещи в Java, о которых вы (возможно) не знали
 
Programming Java - Lecture 02 - Objects - Lavrentyev Fedor
Programming Java - Lecture 02 - Objects - Lavrentyev FedorProgramming Java - Lecture 02 - Objects - Lavrentyev Fedor
Programming Java - Lecture 02 - Objects - Lavrentyev Fedor
 
Groovy и Grails. Быстро и обо всём
Groovy и Grails. Быстро и обо всёмGroovy и Grails. Быстро и обо всём
Groovy и Grails. Быстро и обо всём
 
Java осень 2014 занятие 2
Java осень 2014 занятие 2Java осень 2014 занятие 2
Java осень 2014 занятие 2
 
Bytecode
BytecodeBytecode
Bytecode
 
Lec 4
Lec 4Lec 4
Lec 4
 
Tricky Java Generics
Tricky Java GenericsTricky Java Generics
Tricky Java Generics
 
Лекция 3 Элементарные структуры данных Часть 1
Лекция 3 Элементарные структуры данных Часть 1Лекция 3 Элементарные структуры данных Часть 1
Лекция 3 Элементарные структуры данных Часть 1
 
XML Magic
XML MagicXML Magic
XML Magic
 
Oop java.generics
Oop java.genericsOop java.generics
Oop java.generics
 
Thread
ThreadThread
Thread
 
Scala and LiftWeb presentation (Russian)
Scala and LiftWeb presentation (Russian)Scala and LiftWeb presentation (Russian)
Scala and LiftWeb presentation (Russian)
 
Lambdas in java 8
Lambdas in java 8Lambdas in java 8
Lambdas in java 8
 
Lec 3
Lec 3Lec 3
Lec 3
 
Основы языка Питон: типы данных, операторы
Основы языка Питон: типы данных, операторыОсновы языка Питон: типы данных, операторы
Основы языка Питон: типы данных, операторы
 
C++ Базовый. Занятие 05.
C++ Базовый. Занятие 05.C++ Базовый. Занятие 05.
C++ Базовый. Занятие 05.
 
Exploding Head Issues
Exploding Head IssuesExploding Head Issues
Exploding Head Issues
 
Lec 2
Lec 2Lec 2
Lec 2
 

More from Ecommerce Solution Provider SysIQ

More from Ecommerce Solution Provider SysIQ (19)

Developing for e commerce is important
Developing for e commerce is importantDeveloping for e commerce is important
Developing for e commerce is important
 
Java serialization
Java serializationJava serialization
Java serialization
 
Developing for e commerce is important
Developing for e commerce is importantDeveloping for e commerce is important
Developing for e commerce is important
 
Magento code audit
Magento code auditMagento code audit
Magento code audit
 
User focused design
User focused designUser focused design
User focused design
 
Scalability and performance for e commerce
Scalability and performance for e commerceScalability and performance for e commerce
Scalability and performance for e commerce
 
Lupan big enterprise ecommerce fusion 2013
Lupan   big enterprise ecommerce fusion 2013Lupan   big enterprise ecommerce fusion 2013
Lupan big enterprise ecommerce fusion 2013
 
non-blocking java script
non-blocking java scriptnon-blocking java script
non-blocking java script
 
Going Global
Going GlobalGoing Global
Going Global
 
QA evolution to the present day
QA evolution to the present dayQA evolution to the present day
QA evolution to the present day
 
Quick Intro to Clean Coding
Quick Intro to Clean CodingQuick Intro to Clean Coding
Quick Intro to Clean Coding
 
Manifest of modern engineers
Manifest of modern engineersManifest of modern engineers
Manifest of modern engineers
 
User Behavior: Interacting With Important Website Elements
User Behavior: Interacting With Important Website ElementsUser Behavior: Interacting With Important Website Elements
User Behavior: Interacting With Important Website Elements
 
Seo and Marketing Requirements in Web Architecture
Seo and Marketing Requirements in Web ArchitectureSeo and Marketing Requirements in Web Architecture
Seo and Marketing Requirements in Web Architecture
 
Databases on Client Side
Databases on Client SideDatabases on Client Side
Databases on Client Side
 
Speed Up Your Website
Speed Up Your WebsiteSpeed Up Your Website
Speed Up Your Website
 
Testing schools overview
Testing schools overviewTesting schools overview
Testing schools overview
 
IGears: Template Architecture and Principles
IGears: Template Architecture and PrinciplesIGears: Template Architecture and Principles
IGears: Template Architecture and Principles
 
Модульные сетки в реальном мире
Модульные сетки в реальном миреМодульные сетки в реальном мире
Модульные сетки в реальном мире
 

Java Generics: What it is and How to Implement it

  • 2. Generics в Java 1. Простые generic-и 1.List strList = new ArrayList(); 2.strList.add("some text"); 3.// ??!! O_o 4.strList.add(new Integer(0)); 5.String str = (String)strList.get(0); 6.// ClassCastException 7.Integer i = (Integer)strList.get(0);
  • 3. Generics в Java 1. Простые generic-и 1.List<String> strList = new ArrayList<String>(); 2.strList.add("some text"); 3.strList.add(new Integer()); // сообщение об ошибке компилятора 4.String str = strList.get(0); 5.Integer i = strList.get(0); //сообщение об ошибке компилятора
  • 4. Generics в Java 1. Простые generic-и 1.class GenericList<E>{ 2. E getFirst() { ... } 3. void add(E obj) { ... } 4.} 1.GenericList<String> genericList = new GenericList<String>();
  • 5. Generics в Java 2. Generic-методы 1.public class CreateAnArrayList { 2. public <T> void makeArrayList(T t) { // take an object of an 3. // unknown type and use a 4. // "T" to represent the type 5. List<T> list = new ArrayList<T>(); // now we can create the llist using "T" 6. list.add(t); 7. } 8.} 1.public void makeArrayList(Integer t) { 2. List<Integer> list = new ArrayList<Integer>(); 3. list.add(t); 4.}
  • 6. Generics в Java 2. Generic-методы 1.public class GenMethDemo { 2.// Determine if an object is in an array. 3.static <T> boolean isIn(T x, T[] y) { 4. for(int i=0; i < y.length; i++) 5. if(x.equals(y[i])) return true; 6. return false; 7.} 8.public static void main(String args[]) { 9. // Use isIn() on Integers. 10. Integer nums[] = { 1, 2, 3, 4, 5 }; 11. if(isIn(2, nums)) 12. System.out.println("2 is in nums"); 13. // Use isIn() on Strings. 14. String strs[] = { "one", "two", "three", "four", "five" }; 15. if(isIn("two", strs)) 16. System.out.println("two is in strs"); 17. // Opps! Won"t compile! Types must be compatible. 18. if(isIn("two", nums)) 19. System.out.println("two is in strs"); 20. } 21.}
  • 7. Generics в Java 3. Маски (wildcards) •Предположим, у нас есть функция, которая находит ближайший к точке Glyph из заданной коллекции. Glyph – это базовый тип, и может иметься неограниченное количество потомков этого типа. Также может иметься неограниченное количество коллекций, хранящих элементы, тип которых соответствует одному из этих потомков. Хотелось бы, чтобы функция могла работать со всеми подобными коллекциями, и возвращала элемент, тип которого совпадал бы с типом элемента коллекции, а не приводился к Glyph.
  • 8. Generics в Java 3. Маски (wildcards) 1.<T> T findNearest(Collection<T> glyphs, int x, int y) { ... } 1.<T extends Glyph> T findNearest(Collection<T> glyphs, int x, int y) {...}
  • 9. Generics в Java 3. Маски (wildcards) class <T extends Glyph & MoveableGlyph> MoveableGlyphsContainter static <T, V extends T> boolean isIn(T x, V[] y) {...}
  • 10. Generics в Java 3. Маски (wildcards) 1.public interface Box<T> { 2. public T get(); 3. public void put(T element); 4.} 1.public void unbox(Box<?> box) { 2. System.out.println(box.get());//Так можно 3. box.put(new Object());//Так нельзя 4. box.put(box.get());//Так тоже нельзя 5. System.out.println(box.toString());//Так можно 6.}
  • 11. Generics в Java 4. Хорошо и плохо 1.class FooEverythingDoer 2.{ 3.... 4.Map<String, String> getProperties(Foo foo) {...} 5.void putProperties(Foo foo, Map<String, String> properties) {...} 6.Map<Foo, Map<String, String>> getPropertiesBatch(Iterable<Foo> foos) {...} 7.Foo findByProperties(Map<String, String> partOfProperties) {...} 8.... 9.} 1.class Properties extends Map<String,String> { 2. (constructors matching super here) 3.} 1.class FooEverythingDoer { 2. ... 3. Properties getProperties(Foo foo) {...} 4. void putProperties(Foo foo, Properties properties) {...} 5. Map<Foo, Properties> getPropertiesBatch(Iterable<Foo> foos) {...} 6. Foo findByProperties(Properties partOfProperties) {...} 7. ... 8.}
  • 12. Generics в Java 4. Хорошо и плохо 1. Map<Integer, List<String>> namesById = new HashMap<Integer, List<String>>(); 1.public class CollectionFactory 2.{ 3.public static <K,V> Map<K,V> newMap() 4.{ 5. return new HashMap<K,V>(); 6.} 7.} 8.import static CollectionUtils.newMap; 9.Map<Integer, List<String>> namesById = newMap();
  • 13. Generics в Java 5. Примеры