Bei der Verwendung von Java-Generika kann es vorkommen, dass Sie
Bedenken Sie den folgenden Codeausschnitt:
Map<String, Class<? extends Serializable>> expected = null; Map<String, Class<java.util.Date>> result = null; assertThat(result, is(expected));
Dieser Code kann aufgrund einer Typinkongruenz nicht kompiliert werden.
Das Ändern der Signatur der AssertThat-Methode in:
public static <T> void assertThat(T result, Matcher<? extends T> matcher)
behebt den Kompilierungsfehler. Dadurch kann die Methode einen Matcher akzeptieren, der zum Ergebnistyp passt, wodurch die Typsicherheit gewährleistet wird.
Mit Matcher erweitert T> 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.
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!