- PR -

文字列からのクラスの生成方法

1
投稿者投稿内容
ひろ
会議室デビュー日: 2004/03/04
投稿数: 5
投稿日時: 2004-03-04 15:17
またまた よろしくお願いします。

○やりたいこと
Java(JDK1.3.1使用)にて、String文字列にクラス名を保持させて、
そのクラスを生成させる方法が知りたいです。
もちろん、生成したいクラスは実際に存在してると仮定します。

(例
コード:
public void TestCreate(){
    
    String ClassString = "TestClass01";
    
    Object = [???](ClassString);

    //[???]のコンストラクタとかにクラス名を入れると、Objectにクラス
  //のインスタンスが生成される。
}

初心者な質問ですが、どなたかご教授お願いします。

たーぞう
ぬし
会議室デビュー日: 2003/08/08
投稿数: 317
お住まい・勤務地: お花畑
投稿日時: 2004-03-04 15:29
ClassクラスのforName()を使いましょう。
http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/lang/Class.html
びしばし
大ベテラン
会議室デビュー日: 2002/03/13
投稿数: 181
投稿日時: 2004-03-04 15:30
「リフレクション」や java.lang.Class について調べてみてください。

正解コードを書くのは簡単ですが、ご自分で調べる努力をしていただきたいのでわざと書きません。
ひろ
会議室デビュー日: 2004/03/04
投稿数: 5
投稿日時: 2004-03-04 17:15
早速の回答ありがとうございます。
おかげさまで解決致しました。
今後のためにsourceを乗せます。
コード:

//実行メイン
public class TestMain {

public static void main(String[] args) {

String CreateCls = "test.CreateClass";

ICreatecommand obj;

try {
try {
//クラス名より、クラスのインスタンスを生成しICreatecommand
ICreatecommand createClass =
(ICreatecommand) Class
.forName(
CreateCls,
true,
ICreatecommand.class.getClassLoader())
.newInstance();
createClass.MessageDisp();

} catch (InstantiationException e1) {
// TODO 自動生成された catch ブロック
e1.printStackTrace();
} catch (IllegalAccessException e1) {
// TODO 自動生成された catch ブロック
e1.printStackTrace();
}
} catch (ClassNotFoundException e) {
// TODO 自動生成された catch ブロック
e.printStackTrace();
System.out.println(e.getMessage());
}

System.out.println("CreateOK");
}
}

//使用インターフェース
public interface ICreatecommand {

public void MessageDisp();
}

//インターフェース実装クラス
public class CreateClass implements ICreatecommand {

public CreateClass() {
System.out.println("Create OK");
}
/* (非 Javadoc)
* @see test.ICreatecommand#MessageDisp()
*/
public void MessageDisp() {
// TODO 自動生成されたメソッド・スタブ
System.out.println("作成OK");

}
}





以上です。ありがとうございました。

[ メッセージ編集済み 編集者: ひろ 編集日時 2004-03-04 17:18 ]
1

スキルアップ/キャリアアップ(JOB@IT)