クラスリテラル
Classオブジェクトの表し方として Hoge.class みたいな書き方がある、というのを今知りました。
public class ReflectTest { public static String getClassName ( Class theClass ) { return theClass.getName(); } public static void main(String[] args) { System.out.println( getClassName( ReflectTest.class ) ); } }
こうすると「ReflectTest」って表示されるという感じ。
suite.addTestSuite( ListTest.class );
みたいなことが書いてあって、addTestSuiteはClass型の引数をとるメソッドで、「え、なんだよこの .class って」とか思っていたのですが、これはClassオブジェクトを表すクラスリテラルのことらしいのですね。なので ListTest.class なら、ListTestクラスをあらわすClassオブジェクトのことになるという訳です。
リテラルってわかりにくい言葉だと思うのですけど、私は値の表し方だと解釈しています。たとえばクラスリテラルならば、それはClassオブジェクトの表し方であって、ListTest.class みたいに書くんだよ、という具合で。
そんな訳でメモ。