Você está na página 1de 13

Princípios de

Orientação a Objetos
Aula - Generics

Prof. João Neto


jnetoufrb@gmail.com
Introdução

v Questão 1

List myIntList = new LinkedList(); // 1


myIntList.add(new Integer(0)); // 2
Integer x = (Integer) myIntList.iterator().next(); // 3

Introdução

v Questão 1

List myIntList = new LinkedList(); // 1


myIntList.add(new Integer(0)); // 2
Integer x = (Integer) myIntList.iterator().next(); // 3

Introdução

v Questão 1

List<Integer> myIntList = new LinkedList<Integer>();//1


myIntList.add(new Integer(0)); // 2
Integer x = myIntList.iterator().next(); // 3
Introdução

v Questão 2
Introdução

v Abstração de 1po para uma collec1on (Typesafe


Collec-on)

v Nos exemplos anteriores, a interace List passa a ser


uma interface genérica que possui um 1po
Introdução

v Não é mais necessário fazer


cast
v Exceção de cast acontece em
tempo de execução,
enquanto que Generics é
verificado em tempo de
compilação
Introdução

Em programas extensos,
o conceito de Generics
aumenta a legibilidade
e robustez do código
Generics simples
public interface List <E> {
void add(E x);
Iterator<E> iterator();
}

public interface Iterator<E> {


E next();
boolean hasNext();
}
Generics simples
public interface List <E> {
void add(E x);
Iterator<E> iterator();
}

public interface Iterator<E> {


E next();
boolean hasNext();
}

public interface IntegerList <Integer> {


void add(Integer x);
Iterator<Integer> iterator();
}
Generics e subtipos

v Restrições em relação à classe-mãe

List<String> ls = new ArrayList<String>(); // 1


List<Object> lo = ls; // 2
lo.add(new Object()); // 3
String s = ls.get(0); // 4

Generics e subtipos

v Restrições em relação à classe-mãe

List<String> ls = new ArrayList<String>(); // 1


List<Object> lo = ls; // 2
lo.add(new Object()); // 3
String s = ls.get(0); // 4 Tentativa de atribuir um
//Object a uma String


Introdução

v Abstração de 1pos

List myIntList = new LinkedList(); // 1


myIntList.add(new Integer(0)); // 2
Integer x = (Integer) myIntList.iterator().next(); // 3

Você também pode gostar