2009-06-18 11 views
5

実行時にクラスをjavaに追加(または既存のクラスを拡張)する方法はありますか?私は、実行時に既存のクラスを拡張し、これをクラスパスに追加しなければならないという問題に悩まされているので、この新しいクラスが取り上げられるようになります。実行時にJavaで新しいクラスを拡張または追加する

おかげで、

答えて

4

あなたはBCELで見たいと思うかもしれません。あなたが何をする必要があるかについての情報がそれ以上ない場合、より具体的な答えを与えるのは難しいことです。

0

この機能が必要な理由は間違いありません。 実行時にロジックを追加または置換しようとすると、scripting APIと実際のimplementationsがあります。

11

これを行う方法はいくつかあります。

  • javax.toolsパッケージを使用して、実行時にソースコードをコンパイルしてからClassLoaderを使用してそれらをロードします。
  • インターフェイスに書き込む場合は、Proxyでクラスを飾ることができます。
  • BCELまたはASMなどの技術を使用してバイトコードの操作/生成のより複雑なルートを作成します(アノテーションなどの言語機能の最新のサポートがあります)。クラスローダーでクラスをロードします。

他にもオプションがあります。

関連する問題