クラスオブジェクトは、オブジェクトのクラスを説明する一種のメタオブジェクトです。これは主にJavaのリフレクション機能で使用されます。実際のクラスの「青写真」のように考えることができます。たとえば、次のようなクラスの車があります。
public class Car {
public String brand;
}
次に、「Car」クラスを記述するClassオブジェクトを作成できます。
Class myCarClass = Class.forName("Car");
これで、そのClassオブジェクトのCarクラスに対してあらゆる種類のクエリを実行できます。
myCarClass.getName() - returns "Car"
myCarClass.getDeclaredField("brand") - returns a Field object describing the "brand" field
等々。すべてのJavaオブジェクトには、Javaオブジェクトのクラスを記述するClassオブジェクトを返すメソッドgetClass()があります。したがって、次のようなことができます。
Car myCar = new Car();
Class myCarClass = myCar.getClass();
これは、知らないオブジェクト、たとえば外部から取得したオブジェクトに対しても機能します。
public void tellMeWhatThisObjectsClassIs(Object obj) {
System.out.println(obj.getClass().getName());
}
このメソッドに任意のJavaオブジェクトをフィードすると、指定したオブジェクトの実際のクラスが出力されます。
Javaを使用する場合、ほとんどの場合、Classオブジェクトについて心配する必要はありません。ただし、いくつかの便利なユースケースがあります。たとえば、特定のクラスのオブジェクトをプログラムでインスタンス化できます。これは、オブジェクトのシリアル化と逆シリアル化によく使用されます(たとえば、JavaオブジェクトをXMLまたはJSONとの間で変換します)。
Class myCarClass = Class.forName("Car");
Car myCar = myCarClass.newInstance();
また、これを使用して、クラスなどの宣言されたすべてのフィールドまたはメソッドを見つけることもできます。これは、特定の場合に非常に役立ちます。したがって、たとえば、メソッドが未知のオブジェクトを渡され、それについてもっと知る必要がある場合、たとえば、何らかのインターフェイスを実装する場合など、Classクラスはここでの友達です。
簡単に言うと、java.lang.reflectパッケージに含まれるClass、Field、Methodなどのクラスを使用すると、定義済みのクラス、メソッド、フィールドを分析し、それらの新しいインスタンスを作成し、メソッドを他のあらゆる種類のもので呼び出すことができます。また、実行時にこれを動的に実行できます。
Class
クラス継承Object
そのもの。 クラスを表すオブジェクトをClass.class
返します。あなたは反省について考えることができます。私の頭のASPLODE。Class
Class