Пример этой статьи суммирует использование дженериков в Java. Поделитесь этим для всех для вашей ссылки. Специфика заключается в следующем:
1 базовое использование
Список публичных интерфейсов <e> {void add (e);2 общий и подкласс
Ребенок является подклассом родителей, но список <Child> не является подклассом списка <Dental>.
SO: List <Object> list = new ArrayList <string> () неправильно.
Если вышеуказанное правильное, то:
Список <string> ls = new Arraylist <string> (); Объект для строки потерпит неудачу.
3 подстановки
Из -за 2, следующая реализация невозможна для вывода унифицированной коллекции.
Void printcollection (collection <object> c) {for (Object o: c) {// сделать что -нибудь}}}Итак, нужно использовать? ::
Void printcollection (collection <?> C) {for (Object o: c) {// 1 // что -то} // okТип здесь неизвестен, но любой объект является объектом, поэтому вышеуказанный пример 1 верен. Но следующий пример неверен:
void Add (Collection <? Extens MyClass> C) {C.Add (new MyClass ()); // w} // OKПричина также очень ясна?
4. Метод генерации
Приведенный выше пример может быть достигнут:
<t> add (collection <t> c, t t) {c.add (t);}В предпосылке обеспечения семантики компилятор поможет выполнять работу по конверсии.
5. Сравнение общего времени выполнения
Список <string> l1 = new Arraylist <string> (); / истинный
Потому что общий класс такой же, как и когда.
6 общий массив (может привести к небезопасности типа)
Копий код следующим образом: List <string> [] LSA = New ArrayList <string> [10];
Если возможно, тип может быть не в безопасности. нравиться:
Объект O = LSA; S = LSA [1] .get (0);
Есть надежда, что эта статья полезна для дизайна программы Java каждого.