7

.javaファイルにJavaコードを生成する方法を提供するJava用のツール(C#のcodedomのようなもの)を知っている人はいますか?

編集:私は、操作を自動化することを主な目的とするプラットフォームを構築しています。いくつかの入力を与えて、外部ツールのコードを生成したいと思います。したがって、実行時の生成ではありません。それを生成して実際のファイルに出力したいと思います。

4

5 に答える 5

2

JETはおそらく時代遅れです(私はそれを使用しませんでした)JETチュートリアルパート1

コード生成におけるEclipseプラグイン用のその他のプラグイン

編集:申し訳ありませんが、コードダムとこのツールが意味する機能がわかりません。

スタンドアロンはFreemarker であり、Velocityはこの例も参照してください

于 2010-04-12T17:00:54.143 に答える
1

ASMを使用して、バイトコードレベルで既存のクラスを変更するか、完全に新しいクラスをその場で生成することに成功しました。チュートリアルでは、これを非常に理解しやすい方法で説明します。

ほとんどのそのようなツールのようなASMは、ソースではなくバイトコードを生成します。この理由は、プログラムを使用して新しいコードを動的に生成して実行する場合、これまでJavaコンパイラを呼び出すのは簡単ではなかったためです。したがって、一般的に、ソースよりもバイトコードを生成して使用する方が簡単でした。

プログラム内ですぐにコードを生成して実行する必要がある場合は、バイトコード操作ツールを使用することをお勧めします。必要なのがJavaソースだけの場合は、入力形式を取得してコードを生成する独自のコードジェネレーターをロールします。これを支援するフレームワークを探すこともできますが、ソースファイルは単なるテキストであるため、特にカスタム入力形式がある場合は、通常、これを自分で作成するのも同じくらい簡単です。

于 2010-04-12T16:59:30.890 に答える
1

ABSEとAtomWeaverは、コード生成とモデル駆動型の開発フレームワークを形成し、必要なものを簡単に実装できます。ABSEは、コードジェネレーターを小さなビット(Atomsと呼ばれる)から構成する新しい方法論であり、AtomWaverは、ジェネレーターモデルを実装、操作、および使用できる簡単なIDEです。

また、プログラマー以外の人も、すでに作成されたパーツ(以前に準備したアトム)から作成されたプログラム/構成などを作成できます。

このプロジェクトは現在公開されており、アルファ版が利用可能になっています。ABSEはオープンで、AtomWeaverは個人および商用で無料で使用できます。

ここで詳細情報を入手してください:http ://www.abse.info (免責事項:私はプロジェクトリーダーです)

于 2010-04-14T17:20:13.653 に答える
0

試すことができるのは、既存の文法(ANTLRなど)を使用してASTを構築することです。次に、ASTからコードを生成します。これは、単純なテンプレートよりもはるかに堅牢なはずです。真ん中の何かについては、 StringTemplateについてのTerence Parrからの(目を見張るような)話をお勧めします。(申し訳ありませんが、手元にトークのリンクがありません)

于 2010-04-13T12:36:34.780 に答える
0

本当に必要なものはわかりませんが、 javassistを見てください。それはあなたが探しているものですか?

于 2010-04-13T22:11:11.307 に答える