Differences
This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| programmierung:generics [2025/10/12 17:32] – created swe | programmierung:generics [2025/12/20 14:53] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 41: | Line 41: | ||
| * Der Compiler sorgt dafür, dass nur dieser Typ verwendet werden darf. | * Der Compiler sorgt dafür, dass nur dieser Typ verwendet werden darf. | ||
| * Dadurch entsteht typsicherer, | * Dadurch entsteht typsicherer, | ||
| + | |||
| + | ### <T> extends Class | ||
| + | |||
| + | Es ist nicht selten der Fall, dass die Typparameter einer generischen Klasse zwingend einer bestimmten Superklasse angehören müssen, um ungeeignete Datentypen zu vermeiden. So ist es sinnvoll, beispielsweise die Variablen eines Rechners nur mit numerischen Typen zu initialisieren. Dies kann durch Erweiterungsangaben der Typparameter erfolgen: | ||
| + | |||
| + | ```java | ||
| + | class NumberBox< | ||
| + | private T value; | ||
| + | |||
| + | public NumberBox(T value) { | ||
| + | this.value = value; | ||
| + | } | ||
| + | |||
| + | public T getValue() { | ||
| + | return value; | ||
| + | } | ||
| + | |||
| + | public double getDoubleValue() { | ||
| + | return value.doubleValue(); | ||
| + | } | ||
| + | |||
| + | public static void main(String[] args) { | ||
| + | NumberBox< | ||
| + | System.out.println(intBox.getDoubleValue()); | ||
| + | |||
| + | NumberBox< | ||
| + | System.out.println(doubleBox.getDoubleValue()); | ||
| + | |||
| + | // Das würde einen Compiler-Fehler geben: | ||
| + | // NumberBox< | ||
| + | |||
| + | } | ||
| + | } | ||
| + | ``` | ||
| + | |||
| + | |||
| + | | Klasse/ | ||
| + | |--------------------------|-----------------------------------------------|-----------------------------------------------| | ||
| + | | `Number` | ||
| + | | `Comparable< | ||
| + | | `CharSequence` | ||
| + | | `Collection< | ||
| + | | `List< | ||
| + | | `Map<K, V> | ||
| + | | `AutoCloseable` | ||
| + | | `Runnable` | ||
| + | | `Iterable< | ||
| + | | `Object` | ||
| + | | `Enum< | ||
| + | |||