Finished termin2
This commit is contained in:
16
generics2.md
16
generics2.md
@ -12,7 +12,7 @@ footer: Henri Burau
|
||||
|
||||
# Grundlagen
|
||||
|
||||
Durch Generizität können wir Typen, Klasse und Methode parametrisieren. Der
|
||||
Durch Generizität können wir Typen, Klasse und Methoden parametrisieren. Der
|
||||
genutzte Typ wird dann zur Laufzeit übergeben.
|
||||
|
||||
Genutzt wird dieses Sprachkonzept z.B. im Collection Framework.
|
||||
@ -36,7 +36,7 @@ String result = test.gibHer(test);
|
||||
|
||||
Der Java-Compiler entfernt alle generischen Parameter und arbeitet dann auf den
|
||||
**Raw Types**. Dieser Vorgang wird **Type Erasure** genannt. Das führt zu
|
||||
Beschränkungen zur Laufzeit:
|
||||
Einschränkungen zur Laufzeit:
|
||||
|
||||
* Generische Klassen können keine statischen Felder haben
|
||||
* Es können keine Instanzen aus generischen Typen erzeugt werden
|
||||
@ -80,6 +80,8 @@ class ListenSchreiber {
|
||||
}
|
||||
```
|
||||
|
||||
Warum wird hier nicht der Parameter-Typ ``List<Object>`` genutzt?
|
||||
|
||||
---
|
||||
|
||||
## Lower Bounds
|
||||
@ -96,6 +98,9 @@ class IntegerSammler {
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Welche Typen akzeptiert der Compiler für den Parameter ``liste``?
|
||||
|
||||
---
|
||||
|
||||
## Upper Bounds
|
||||
@ -113,6 +118,13 @@ class Sortierer {
|
||||
}
|
||||
```
|
||||
|
||||
Welche Typen akzeptiert der Compiler für den Parameter ``liste``?
|
||||
|
||||
---
|
||||
|
||||
# Aufgaben
|
||||
|
||||
1) Wann benutzt man ``super`` und wann ``extends`` ?
|
||||
* "Producers Extend, Consumers Super". [Java Guidelines](https://docs.oracle.com/javase/tutorial/java/generics/wildcardGuidelines.html)
|
||||
* ``extends`` erlaubt das Aufrufen von Gettern, ``super`` von Settern
|
||||
|
||||
|
||||
Reference in New Issue
Block a user