2

私のグーグルfooは私を失敗させています。アノテーションに基づいてコード生成を行うことができるフレームワークがあり、開発者が事前にコンパイルし、生成されるものを確認し、場合によってはコードを変更できるように、ビルド時のソースコード生成の両方をサポートしたい場合、しかし、プラグインベースのアプリなど、より動的なアプリのランタイムバイトコード生成も提供します。両方のタスクにASMを使用できますか、それとも2つの異なるライブラリを使用してこれを2回プログラムする必要がありますか?可能であれば、例へのリンクを歓迎します。

4

2 に答える 2

3

これは質問に直接答えるものではありませんが、ASMではなくJavassistを使用することをお勧めします。

Javassistを使用すると、ソースコードを生成することから始め、それをJavassistコンパイラに渡してバイトコードに変換するだけなので、追加のトリックなしで両方を利用できるようになります。さらに、IMHO、Javassistのソースコードの生成は、バイトコードやASMをいじるよりもはるかに簡単です。

于 2012-03-26T07:18:14.593 に答える
1

ビルド時のコード生成には、オープンAPIを備えていないEclipse Javaコンパイラーを使用することをお勧めしますが、実際には非常に使いやすいです。ここでそれをどのように使用できるかを見ることができます:http://git.jetbrains.org/?p = mps / mps.git; a = tree; f = core / kernel / source / jetbrains / mps /compiler; h = 6787147e3b36899574f042dd2132a4c08963670e; hb = HEAD(このコードは主に私が書いたものです)。コンパイルされたクラスを動的にロードする方法の例もあります(MyClassLoader内部クラス)。

于 2012-03-26T08:16:56.243 に答える