0Pricing
Dart Academy · Lektion

Begrenzte Typparameter mit extends

Einschränken, was ein generischer Typ akzeptieren kann

Begrenzte Typparameter mit extends ist eine kostenlose Dart Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Dart Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Dart Academy-Kurs umfasst insgesamt 4 Lektionen.

Wann jeder Typ zu viel ist

Ein einfacher Typparameter akzeptiert jeden Typ, aber manchmal benötigen Sie mehr. Vielleicht möchten Sie eine Methode aufrufen, die nur bestimmte Typen anbieten. 🔒

Die Begrenzung mit extends

Sie können mit extends eine Begrenzung hinzufügen. Damit muss der Typparameter ein bestimmter Typ oder ein Subtyp davon sein.

class Cage<T extends Animal> {}

Was eine Begrenzung garantiert

Innerhalb der Klasse weiß Dart nun sicher, dass T mindestens ein Animal ist. Daher können Sie jedes von Animal definierte Member sicher verwenden.

class Cage<T extends Animal> {
  void feed(T a) => a.eat();
}

Ungültige Typen zurückweisen

Der Compiler blockiert jedes Typargument, das die Begrenzung nicht erfüllt. Ein unabhängiger Typ führt sofort zu einem Fehler.

Cage<String>();

Eine numerische Begrenzung

Eine häufige Begrenzung ist num, der übergeordnete Typ von int und double. Damit kann ein Generic rechnen und gleichzeitig beide Zahlentypen akzeptieren.

T addOne<T extends num>(T x) => x + 1 as T;

Begrenzungen bei Methoden

Begrenzungen funktionieren auch bei generischen Methoden, nicht nur bei Klassen. Setzen Sie extends in der Methode direkt hinter den Namen des Typparameters.

num biggest<T extends num>(List<T> xs) =>
    xs.reduce((a, b) => a > b ? a : b);

Die Standardbegrenzung ist Object

Wenn Sie keine Begrenzung angeben, ist die implizite Begrenzung Object?. Deshalb können Sie bei einem unbegrenzten T nur Member verwenden, die jedes Objekt besitzt.

Comparable als Begrenzung

Zum Sortieren oder Vergleichen verwenden Sie Comparable als Begrenzung. Dann können Sie in Ihrem generischen Code compareTo für die Werte aufrufen.

T max<T extends Comparable<T>>(T a, T b) =>
    a.compareTo(b) >= 0 ? a : b;

Begrenzungen dokumentieren die Absicht

Eine Begrenzung zeigt Leserinnen und Lesern außerdem, welche Arten von Typen hier zulässig sind. Die Signatur selbst erklärt den Vertrag, den Ihr Code erwartet.

Selbstreferenzielle Begrenzungen

Beachten Sie, dass T in seiner eigenen Begrenzung vorkommen kann, etwa als T extends Comparable of T. Dieses Muster verknüpft einen Typ mit Operationen auf sich selbst.

Begrenzungen minimal halten

Verwenden Sie die weiteste Begrenzung, mit der die Aufgabe noch funktioniert. Zu starke Einschränkungen schließen gültige Typen aus, während eine fehlende Begrenzung nützliche Methoden unerreichbar lässt.

Schnelltest

Was können Sie innerhalb der Klasse dank einer Begrenzung tun?

Zusammenfassung

Sie haben extends verwendet, um einen Typparameter zu begrenzen. Dadurch wurden die Methoden des begrenzenden Typs verfügbar und unabhängige Typen zurückgewiesen. Halten Sie Begrenzungen so weit wie nötig. ✅

Häufig gestellte Fragen

Ist die Lektion „Begrenzte Typparameter mit extends“ kostenlos?

Ja — der vollständige Text von „Begrenzte Typparameter mit extends“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Dart Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Dart Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Begrenzte Typparameter mit extends“?

Einschränken, was ein generischer Typ akzeptieren kann Du übst Dart Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Dart Academy zu starten?

Keine Vorkenntnisse erforderlich. Dart Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.

Wie lange dauert die Lektion „Begrenzte Typparameter mit extends“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Dart Academy-Lektion Code schreiben und ausführen?

Ja. Jede Dart Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Warum Generics dynamic überlegen sind
  2. Generische Klassen und Methoden
  3. Begrenzte Typparameter mit extends
  4. Generische Collections in der Praxis
← Zurück zu Dart Academy