Heim > Java > javaLernprogramm > Warum sollte „' in Java Generics verwendet werden, insbesondere in „assertThat'-Methoden?

Warum sollte „' in Java Generics verwendet werden, insbesondere in „assertThat'-Methoden?

Barbara Streisand
Freigeben: 2024-11-20 17:57:18
Original
840 Leute haben es durchsucht

Why Use `` in Java Generics, Especially in `assertThat` Methods?

Java-Generika: Wann und warum sollten Sie verwenden?

Bei der Verwendung von Java-Generika kann es vorkommen, dass Sie benötigen ; anstelle von . In diesem Artikel werden die Gründe dafür untersucht und mögliche Nachteile im Zusammenhang mit der Verwendung von untersucht.

Kompilierungsfehler in der AssertThat-Methode

Bedenken Sie den folgenden Codeausschnitt:

Map<String, Class<? extends Serializable>> expected = null;
Map<String, Class<java.util.Date>> result = null;
assertThat(result, is(expected));
Nach dem Login kopieren

Dieser Code kann aufgrund einer Typinkongruenz nicht kompiliert werden. Gibt an, dass der tatsächliche Parameter SomeClass oder einer seiner Untertypen sein kann. In diesem Fall enthält das Ergebnis Class Objekte, während „expected“ Klassenobjekte enthalten kann, die jede Klasse darstellen, die Serializable implementiert. Daher wird T speziell auf Map> gesetzt, was nicht mit Map>>`.

Wechsel zu Matcher

Das Ändern der Signatur der AssertThat-Methode in:

public static <T> void assertThat(T result, Matcher<? extends T> matcher)
Nach dem Login kopieren

behebt den Kompilierungsfehler. Dadurch kann die Methode einen Matcher akzeptieren, der zum Ergebnistyp passt, wodurch die Typsicherheit gewährleistet wird.

Irgendwelche Nachteile bei der Verwendung von Matcher?

Mit Matcher bietet keine nennenswerten Nachteile. Es stellt sicher, dass ein kompatibler Matcher bereitgestellt wird, und verhindert mögliche Laufzeitausnahmen, die durch nicht übereinstimmende Typen verursacht werden.

Zweck von AssertThat-Generika

Generika in der AssertThat-Methode ermöglichen eine Typprüfung, um sicherzustellen, dass der bereitgestellte Matcher übereinstimmt zum Ergebnistyp. Während für die Matcher-Klasse keine Generika erforderlich sind, trägt deren Verwendung dazu bei, die Typsicherheit durchzusetzen und potenzielle Fehler zu verhindern.

Das obige ist der detaillierte Inhalt vonWarum sollte „' in Java Generics verwendet werden, insbesondere in „assertThat'-Methoden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage