JAVAで何が返されるのか誰か説明してもらえますかSomeClassname.class
?? 私はそれが何をするのか理解できません..
6 に答える
これは、特定のインスタンスに対してObject.getClass()が行うことと同じものを返しますが、必要なクラスが静的にわかっている場合 (つまり、コンパイル時) に使用できます。
Javadoc から:
このオブジェクトのランタイム クラスを返します。
つまり、(元の) オブジェクトのクラスを表すオブジェクトを提供します。メソッドとフィールドを呼び出し/アクセスするためにプログラムでメソッドとフィールドを発見したい場合、特にリフレクションによって使用されます。
例えば:
Method m[] = String.class.getDeclaredMethods();
for (int i = 0; i < m.length; i++)
{
System.out.println(m[i].toString());
}
Javadoc では、Java 言語仕様 - クラス リテラル(少し読みにくいかもしれません) についても言及しています。
指定されたクラス名を表すClassオブジェクトを返します。これは、Classオブジェクトを取得する必要がある場合に使用されます。
これは、オブジェクトインスタンスに対応するClassオブジェクトを返す.getClass()にほぼ対応します。Classオブジェクトを操作する必要があり、オブジェクトインスタンスがない場合は、someclassname.classを使用します。
.class はクラス リテラルです... 5 が int リテラルであるように、5.0 は double リテラルです (驚くべきことに、java.lang パッケージには「Class」という名前のクラスがあります)。
したがって、クラス リテラルを出力できます (任意のオブジェクトを出力できるように... toString() メソッドが Class クラスで返すものを取得します)。クラス変数を持つことができます。
PS: 使える機能はたくさんあります
.getClass() メソッドと同じですが、名前付きクラスと void クラスにのみ使用できます。.class 構文を使用すると、オブジェクトのタイプが利用可能であるがインスタンスがない場合にクラスを取得できます。また、プリミティブ型のクラスを取得する最も簡単な方法。
Class object = SomeClass.class; と同じです。上記のステートメントは、その特定のクラスのオブジェクトを返し、それをクラス変数に入れます。それは Class オブジェクトを返します。