- PR -

クラスを動的にロードするには?

1
投稿者投稿内容
Javaスターター
ベテラン
会議室デビュー日: 2004/06/14
投稿数: 67
投稿日時: 2005-06-03 20:21
こんばんは。よろしくお願いいたします。

ある場所(例:C:\conf)に「config」というファイルを置き
そこに、
A,jp.co.test.ClassA
B,jp.co.test.ClassB
と書いておきます。
そして、ClassLoadTestMain.javaから
このテキストの内容を読み込んで、メインスレッドの中から
configファイルを読み込んで、ClassA,ClassBのインスタンス化
したいと思っています。
new ClassA("A");
new ClassB("B");

テキストファイルの読み込みはできているのですが、
そこからクラスをロードし、インスタンスかする方法がわかりません。
(具体的には、loadClassとnewInstanceの実装方法でしょうか?)
URLとかなら、URLClassLoaderがあるので、それを用いればいいのですが、
ClassLoaderは抽象クラスで具体的に何を実装すればいいのか、皆目検討
がつきません。

どなたかご存知の方がおれらましたらご教授願います。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2005-06-03 20:39
その対象のクラスがどこに配置されているかが問題です。
クラスパス上に存在するなら、Class.forName("<クラス名>");でOKです。
もしクラスパス上にないのであれば、クラス名だけではクラスの解決はできませんね。

仮にURLやパスなどで示しているのであればURLClassLoaderで読み込めます。

クラスの解決とは、クラス名やクラスパスやURLなどをヒントに
バイト列を取得してClassのインスタンスにする事です。
1

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