ホームページ  >  記事  >  Java  >  JavaジェネリックにおけるTと?の違い

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

王林
王林オリジナル
2020-01-15 16:28:175906ブラウズ

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

#T は型を表します。

クラスに追加:

class SuperClass<A>{}

メソッドに追加:

public <T>void fromArrayToCollection(T[] a, Collection<T> c){}

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

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

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

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。