Java_generics.pdf

(155 KB) Pobierz
TYPY GENERYCZNE (GENERICS)
ZAGADNIENIA:
wprowadzenie,
konwencje, metody, typy surowe
parametry ograniczone
podtypy, dziedziczenie,
symbole wieloznaczne,
ograniczenia.
MATERIAŁY:
http://docs.oracle.com/javase/tutorial/java/generics/
HTTP://USERS.UJ.EDU.PL/~CIESLA/
JĘZYK JAVA, FAIS UJ 2012/2013
1
TYPY GENERYCZNE
List<String> list =
new
ArrayList<String>();
list.add("Ala");
String s = list.get(0);
ZALETY:
kontrola typów na poziomie kompilacji, a nie dopiero
w trakcie działania programu
brak potrzeby rzutowania,
konstruowanie ogólnych algorytmów.
HTTP://USERS.UJ.EDU.PL/~CIESLA/
JĘZYK JAVA, FAIS UJ 2012/2013
2
PRZYKŁAD
public class
Box<T> {
// T oznacza Typ
private
T
t;
public void
set(T t) {
this.t
= t;
}
public
T
get() {
return
t;
}
}
ogólnie:
class
NazwaKlasy<T1, T2, ..., Tn> {
...
}
HTTP://USERS.UJ.EDU.PL/~CIESLA/
JĘZYK JAVA, FAIS UJ 2012/2013
3
KONWENCJE
T – typ,
K – klucz,
V – wartość,
E – element (np. kolekcji),
N – liczba
PRZYKŁAD:
public interface
Pair<K, V> {
public
K getKey();
public
V getValue();
}
HTTP://USERS.UJ.EDU.PL/~CIESLA/
JĘZYK JAVA, FAIS UJ 2012/2013
4
PRZYKŁADY
public class
OrderedPair<K, V>
implements
Pair<K, V> {
private
K
key;
private
V
value;
public
OrderedPair(K key, V value) {
this.key
= key;
this.value
= value;
}
public
K getKey() {
return
key;
}
public
V getValue() {
return
value;
}
}
Pair<String, Integer> p =
new
OrderedPair<String, Integer>("Even", 8);
Pair<String, Integer> p =
new
OrderedPair<>("Even", 8);
// Java 7
HTTP://USERS.UJ.EDU.PL/~CIESLA/
JĘZYK JAVA, FAIS UJ 2012/2013
5
Zgłoś jeśli naruszono regulamin