Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
programmierung:generics [2025/11/07 08:52] sweprogrammierung:generics [2025/12/20 14:53] (current) – external edit 127.0.0.1
Line 45: Line 45:
  
 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: 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<T extends Number> {
 +    private T value;
 +
 +    public NumberBox(T value) {
 +        this.value = value;
 +    }
 +
 +    public T getValue() {
 +        return value;
 +    }
 +
 +    public double getDoubleValue() {
 +        return value.doubleValue(); // Number-Methode
 +    }
 +
 +    public static void main(String[] args) {
 +        NumberBox<Integer> intBox = new NumberBox<>(42);
 +        System.out.println(intBox.getDoubleValue()); // 42.0
 +
 +        NumberBox<Double> doubleBox = new NumberBox<>(3.14);
 +        System.out.println(doubleBox.getDoubleValue()); // 3.14
 +
 +        // Das würde einen Compiler-Fehler geben:
 +        // NumberBox<String> stringBox = new NumberBox<>("Hallo");
 +
 +    }
 +}
 +```
 +
  
 | Klasse/Interface         | Typische Subklassen/Implementierungen         | Beispiel für generische Einschränkung         | | Klasse/Interface         | Typische Subklassen/Implementierungen         | Beispiel für generische Einschränkung         |