Javaには「java.lang.Class」というクラスがあります。このクラスは、クラスの情報にアクセスしたり、操作したりするためのクラスです。
java.lang.Objectには「getClass」というメソッドがあります。Objectは全てのクラスの祖先に当たるクラスです。そのため、全てのクラスにはgetClassメソッドが存在します。
「オブジェクト.getClass()」とすることで、Classクラスのオブジェクトを得られます。そして、このオブジェクトを通して、クラスの情報や、クラスの操作を行うことができます。
Object obj = new Object(); System.out.println(obj.getClass().getName()); // 「java.lang.Object」と出力 System.out.println(obj.getClass().getSimpleName()); // 「Object」と出力 System.out.println(obj.getClass().getPackage().getName()); // 「java.lang」と出力
また、java.lang.Objectには「class」というpublic static finalのフィールドがあります。
「クラス.class」とすることで、Classクラスのオブジェクトを得られます。そして、このオブジェクトを通して、クラスの情報や、クラスの操作を行うことができます。
System.out.println(Object.class.getName()); // 「java.lang.Object」と出力 System.out.println(Object.class.getSimpleName()); // 「Object」と出力 System.out.println(Object.class.getPackage().getName()); // 「java.lang」と出力
Javaでは、Classクラスの各種命令を使い、フィールドやメソッドの情報を得たり、その操作をしたり、オブジェクトを生成したりすることができます。
この仕組みのことを「リフレクション」と呼びます。リフレクションは初心者には高度な仕組みですので、ここではClassクラスのURLを貼るだけに留めておきます。