クラス名のリストがテキストファイルであった場合それを読み込んでそのクラス名のインスタンスを動的に作成する方法あるでしょうか。

言語はJAVAを使用します。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2005/07/31 18:34:40
  • 終了:--

回答(7件)

id:tarchan No.1

たーちゃん回答回数200ベストアンサー獲得回数22005/08/01 00:15:46

ポイント10pt

Class.forNameを使うことで動的に指定したクラス名のインスタンスが作成されます。返り値の型はObjectですが、実際の型は作成したクラスのものになっています。C言語のようなキャストの必要は全くありません。

http://www.hatena.ne.jp/1121941919 の6番以降で回答しましたが、動的なメソッドの呼び出しにはBeans APIを使用します。

id:Keiichiro No.2

Keiichiro回答回数84ベストアンサー獲得回数02005/07/31 18:43:10

ポイント18pt

Class.forNameメソッドを使用してください。

テキストファイルから文字列を読み込んでおいて、forNameメソッドに引数としてクラス名を入れればロードできます。

id:halyan

ありがとうございます。

Calss.foNameで取得できるのはClassオブジェクトで指定したクラス名のインスタンスではありません。

2005/07/31 18:54:01
id:wasisan No.3

wasisan回答回数86ベストアンサー獲得回数72005/07/31 19:35:51

ポイント18pt

http://milkyway.merseine.nu/Java/Java080.html

Java講座-インスタンスを動的に生成しよう

forNameでクラスオブジェクトを取得してから,newInstanceを使えば良いと思います.

詳しくはURL参照.

id:halyan

ありがとうございます。

しかし、newInstanceでは戻り値がObject型ですので明示的にキャストする必要があります。クラス名のみからインスタンスを作成する必要があります。

2005/07/31 19:55:43
id:renmin-plus No.4

renmin-plus回答回数23ベストアンサー獲得回数02005/07/31 20:02:14

ポイント17pt

実行時に型を指定してキャストすることはできません。多分、変数の型と実行時の型を混同されてます。変数の型は実行時には存在しません。型変換というのも、あくまでコンパイル時の概念であって、実行時には存在しません。実行時に存在するのは、型の変換ではなくて、型のチェックだけです。


お望みのようなキャストの方法が、質問の中心なのであれば、回答は、「できない」以外ありません。

id:halyan

ありがとうございます。

無理ですか。

2005/07/31 20:58:19
id:sshi No.5

s回答回数14ベストアンサー獲得回数12005/07/31 23:54:28

ポイント17pt

http://www.example.com/

Example Web Page

URLはダミーです。

直接の質問の答えではないですが、そのようなテキストファイルがあるのなら、そこからスクリプト言語かなにかで、Javaソースを動的に生成されてはどうでしょうか。

テキストファイルが更新された後に、スクリプトをはしらせてソースを生成したあとにコンパイルしなおす必要がありますが。

質問者が未読の回答一覧

 回答者回答受取ベストアンサー回答時間
1 UJML 3 2 0 2005-08-02 20:00:33
2 noragrammer 4 3 0 2005-08-03 01:17:42

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません