JavaジェネリックにおけるTと?の違い

王林
リリース: 2020-01-15 16:28:17
オリジナル
5925 人が閲覧しました

JavaジェネリックにおけるTと?の違い

#T は型を表します。

クラスに追加:

class SuperClass<A>{}
ログイン後にコピー

メソッドに追加:

public <T>void fromArrayToCollection(T[] a, Collection<T> c){}
ログイン後にコピー

(無料の学習ビデオ チュートリアルの共有:

java ビデオ チュートリアル)

メソッドの は、括弧内でジェネリック パラメーターが使用されていることを意味します。ジェネリックがクラスで渡される場合、ここで渡す必要はありません。呼び出し側の型でジェネリック パラメーターが提供されます。ジェネリック型は、クラスで渡されるジェネリック型と一貫性があります。

class People<T>{
public void show(T a) {
   }
}
ログイン後にコピー

T extends T2 は、渡されたパラメータが T2 または T2 のサブタイプであることを意味します。

? はワイルドカード文字であり、すべてのタイプを指します。

は通常、参照変数を定義するために使用されます。この利点は、以下に示すように、sup 参照変数を定義すると複数のオブジェクトを指すことができることです。

SuperClass<?> sup = new SuperClass<String>("lisi");
sup = new SuperClass<People>(new People());
sup = new SuperClass<Animal>(new Animal());
ログイン後にコピー

? を使用せず、固定型を使用する場合:

SuperClass<String> sup1 = new SuperClass<String>("lisi");
SuperClass<People> sup2 = new SuperClass<People>("lisi");
SuperClass<Animal> sup3 = new SuperClass<Animal>("lisi");
ログイン後にコピー

これは ? ワイルドカードの利点です。

おすすめの関連記事とチュートリアル:

Java 入門チュートリアル

以上がJavaジェネリックにおけるTと?の違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート