Изменения

Перейти к: навигация, поиск

Generics

29 байт убрано, 22:38, 1 октября 2013
Малое исправление
Вот типичное использование такого рода (без Generics):
1. List myIntList = new LinkedList(); // 1 2. myIntList.add(new Integer(0)); // 2 3. Integer x = '''(Integer)''' myIntList.iterator().next(); // 3
Как правило, программист знает, какие данные должны быть в List'e.
Тем не менее, стоит обратить особое внимание на Приведение типа ('''"Cast"''') в строчке 3 имеет важное очень значение. Компилятор может только лишь гарантировать, что метод next() вернёт Object будет возвращен итератору,
но чтобы обеспечить присвоение переменной типа Integer правильным и безопасным, требуется Cast.
Cast не только создает беспорядки, но дает возможность появление ошибки "Runtime Error" из-за невнимательности программиста.
И появляется такой вопрос: "Как с этим бороться? "
В частности: "Как же зарезервировать List для определенного типа данных ?"
Как раз такую проблему решают Generics.
1. List'''<Integer>''' myIntList = new LinkedList'''<Integer>'''(); // 1’ 2. myIntList.add(new Integer(0)); //2’ 3. Integer x = myIntList.iterator().next(); // 3’
Обратите внимание на объявления типа для переменной myIntList.
Он указывает на то, что это не просто произвольный List, а List<Integer>.
Мы говорим, что List является generic-интерфейсом, который принимает параметр типа - в этом случае, Integer.
Кроме того, необходимо обратить внимание на то, что теперь Cast выполняется по линии в строчке 3' автоматически.
Некоторые могут задуматься, что беспорядок в коде увеличился, но это не так.
Вместо приведения к Integer в строчке 3, у нас теперь есть Integer в качестве параметра в строчке 1'.Это очень сильно меняет кодЗдесь существенное отличие. Теперь компилятор может проверить этот тип на корректность во время компиляции.
'''И когда мы говорим''', что myIntList объявлен как List<Integer>, это будет '''''справедливо''''' во всем коде и компилятор это гарантирует.
* На заметку:
Эффект от Generics особенно проявляется в крупных проектах, так как : он улучшает читаемость и надежность кода в целом.
== Свойства ==
Анонимный участник

Навигация