1. ホーム
  2. java

[解決済み] Java Genericsの<?>と<?extends Object>の違いは何ですか?

2022-10-31 21:15:58

質問

私は以前、ワイルドカードがあらゆるオブジェクトを意味するために使われているのを見たことがありますが、最近、その使い方を見ました。

<? extends Object>

すべてのオブジェクトはObjectを継承するので、この2つの使い方は同義でしょうか?

どのように解決するのですか?

<?> そして <? extends Object> は同義語であることはご想像の通りです。

ジェネリックでは、いくつかのケースで extends Object は実際には冗長ではありません。例えば <T extends Object & Foo>T になる。 Object になるのに対して、消去の場合は <T extends Foo> になる。 Foo になります。(これは、もしあなたが Object .)

出典 http://download.oracle.com/javase/tutorial/extra/generics/convert.html ;それはなぜJDKの java.util.Collections クラスがこのシグネチャを持つメソッドを持っている理由を説明しています。

public static <T extends Object & Comparable<? super T>> T max(
    Collection<? extends T> coll
)