Java ジェネリックを使用する場合、
次のコード スニペットを考えてみましょう:
Map<String, Class<? extends Serializable>> expected = null; Map<String, Class<java.util.Date>> result = null; assertThat(result, is(expected));
型の不一致のため、このコードはコンパイルに失敗します。 assertThat メソッドのシグネチャを次のように変更すると、 によりコンパイル エラーが解決されます。これにより、メソッドは結果の型に適合する Matcher を受け入れることができ、型の安全性が確保されます。Matcher に変更します extends T>
public static <T> void assertThat(T result, Matcher<? extends T> matcher)
Matcher を使用するデメリットはありますか?
extends T>?Matcher の使用 T> を拡張します。重大な欠点はありません。これにより、互換性のある Matcher が提供されるようになり、型の不一致によって引き起こされる潜在的なランタイム例外が防止されます。assertThat ジェネリックの目的assertThat メソッドのジェネリックにより、提供された Matcher が対応していることを確認するための型チェックが可能になります。結果の型に。 Matcher クラスにはジェネリックスは必要ありませんが、ジェネリックスを使用すると、型の安全性が強化され、潜在的なエラーを防ぐことができます。
以上がJava ジェネリックス、特に `assertThat` メソッドで `` を使用するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。