JavaのObject、T(汎型)、?違います


最近、パンチングを見直したので、また反射を見ました。Object、T(以下、パンチング)、?疑惑が生じた。
まずObject類を理解してみます。Javaを勉強している人はすべてObjectがすべての種類の親であることを知っているはずです。まずこの点を覚えてください。パラメータの種類がObjectなら、パラメータの種類は非常に広いです。
『Thinking in Java』では、多くの原因が一般的な出現につながったと言われていますが、最も注目されているのは容器類を作るためです。これはどうやって理解しますか?私の理解では、これを捨てて容器類を作ることができます。普通型に戻る目的はある種類を限定することです。
ですから、私たちは今ObjectとTを結ぶことができます。
Objectは範囲が広いです。Tは最初からこのタイプを限定します。
Objectはすべての種類の親タイプなので、強制的にタイプ変換されますが、Tは最初からコードを書く時にある種類の具体的なタイプを限定していますので、強制的なタイプ変換は必要ありません。コードを書く時に一般型が仮想マシンでJVMに消去されるので、特定のタイプの情報を参考にしてください。ここでは説明しません。
例えばjdkのList類は汎型です。今私たちが制定したタイプはObjectです。

List<Object> list = new ArrayList<Object>();
int i = 0;
String s = "s";
list.add(i);
list.add(s);
List自体は汎型であり、Objectタイプのパラメータを受信することを指定します。この時は任意のタイプのパラメータを入れてもいいです。取り出した時は強制的なタイプを具体的なタイプに変換しなければなりません。
今私たちは、ListをStringタイプのパラメータを指定すると、このListはStringタイプだけを置くことができ、取り出す時は強制タイプ変換は行わない。
このことが私たちに与えられたヒントは、Listのようなものを書く時に、汎型を使うかどうかに注意しなければならないということです。きっと多くいくつかの泛型種類を書いて、多く討論して理解して、さもなくばやはりかき混ぜていっしょにいるかもしれません。
次はこれは反射のためにClassタイプを取得する必要がある場合に使うことができますが、不確定なタイプを受信するのはObjectと同じです。それについて一つの理解は、ただ「?」Objectと同じですが、「?」Objectよりもやや「高級」な使い方がありますが、不確定な範囲を縮小して利用できるということです。extends Test"は、Testクラスのみの引き継ぎクラスを受信するという意味で、Objectの範囲よりも縮小されていますか?
以上がObject、T、?の違い。何行のコードを多く書いて、多くテストをして、多く討論して、いつどこで適切に使うかを知っています。
この詳しくはJavaのObject、T(汎型)、?違いは小編が皆さんに提供した内容を全部共有しました。参考にしていただければと思います。どうぞよろしくお願いします。