Articles

Javaでクラスを使用するには?

私たちが知っているのは、”anyクラスのすべてのインスタンスは同じjavaを共有します。ラングそのタイプのクラスオブジェクト”

例えば)

Student a = new Student();Student b = new Student();

その後a.getClass() == b.getClass()真です。

今仮定します

Teacher t = new Teacher();

ジェネリックなしで以下が可能です。

Class studentClassRef = t.getClass();

しかし、これは今間違っています。.?

例)public void printStudentClassInfo(Class studentClassRef) {}Teacher.class

これはジェネリックを使用して避けることができます。,

Class<Student> studentClassRef = t.getClass(); //Compilation error.

さて、Tとは何ですか?? Tは型パラメータ(型変数とも呼ばれます)で、山かっこ(<>)で区切られ、クラス名の後に続きます。
Tは単なるシンボルであり、変数名のように(任意の名前にすることができます)クラスファイルの書き込み中に宣言されました。 その後、tは初期化中に有効なクラス名で置換されます(HashMap<String> map = new HashMap<String>();

例えば、class name<T1, T2, ..., Tn>

SoClass<T>特定のクラスタイプ’T‘のクラスオブジェクトを表します。,

ここでTはStringcarnameとしてタイプ

またはTはIntegermodelNumberとしてタイプ、

またはTはObjectタイプとして使用できます有効な車のインスタンス。

ここで上記は、実行時に異なる方法で使用できる単純なPOJOです。コレクションなど)List、Set、Hashmapは、tの宣言に従って異なるオブジェクトで動作する最良の例ですが、tをString
eとして宣言すると、TはString
eます。,g)HashMap<String> map = new HashMap<String>();それからそれはStringクラスのインスタンスオブジェクトだけを受け入れます。

ジェネリックメソッド

ジェネリックメソッドは、独自の型パラメータを導入するメソッドです。 これはジェネリック型の宣言に似ていますが、typeパラメーターのスコープは、宣言されているメソッドに限定されます。 静的および非静的ジェネリックメソッド、およびジェネリッククラスコンストラクターが

ジェネリックメソッドの構文には、山かっこの中に型パラメーターが含まれ、メソッドの戻り値の型の前に表示されます。, ジェネリックの方法には、型パラメータ部分よりも前に書かれていなければなメソッドの戻ります。

ここで<K, V, Z, Y>は、戻り値の型の前にあるメソッド引数で使用される型の宣言ですbooleanここで。型宣言<T>は、すでにクラスレベルで宣言されているため、メソッドレベルでは必要ありません。

class MyClass<T> { private T myMethod(T a){ return a; }}

しかし、クラスレベルの型パラメータK、V、Z、およびYは静的コンテキスト(ここでは静的メソッド)では使用できないため、以下は間違っ,最後に、静的メソッドは常に明示的な<T>宣言を必要とします。Class<T>クラスレベルから派生することはありません。 これは、クラスレベルTがインスタ

ジェネリックの制限も読み取ります

ワイルドカードとサブタイプ

ジェネリックメソッドの型引数