2009年07月09日

【1日1Java】クラス名を取得する

java.lang.Class
getName, getCanonicalName, getSimpleName

// JRE 1.6.0_07
// java.lang.Class
// クラス名を取得する
// tag getName getCanonicalName getSimpleName

String name;
Class cls;

///////////////////////////////////////////
// Stringの名前を取ってみる
// getCanonicalName
name= "str".getClass().getCanonicalName();
System.out.println( name );
  // => java.lang.String

// getName
name= "str".getClass().getName();
System.out.println( name );
  // => java.lang.String

// getSimpleName
name= "str".getClass().getSimpleName();
System.out.println( name );
  // => String

///////////////////////////////////////////
// 配列だとどうなるか
// getCanonicalName
name = String[].class.getCanonicalName();
System.out.println( name );
  // => java.lang.String[]

// getName
name = String[].class.getName();
System.out.println( name );
  // => [Ljava.lang.String;

// getSimpleName
name = String[].class.getSimpleName();
System.out.println( name );
  // => String[]

///////////////////////////////////////////
// Classに戻せるか
// getCanonicalName => ダメ
cls = Class.forName( String[].class.getCanonicalName() );
System.out.println( cls );
  // => ClassNotFoundException: java/lang/String[]

//getName => 成功
cls = Class.forName( String[].class.getName() );
System.out.println( cls );
  // => class [Ljava.lang.String;

// getSimpleName => もちろんダメ
cls = Class.forName( String[].class.getSimpleName() );
System.out.println( cls );
  // => ClassNotFoundException: String[]