1

私は、本質的に、ユーザーが非常に長い/反復的なコード用のマクロを作成する方法であるプロジェクトを行っています。これにより、これらのマクロをコードに挿入して、読みやすさを向上させ、再利用を促進できます。

プロジェクトは 2 つの領域に分かれています。ユーザーがマクロを作成してファイルに保存する RCP アプリケーションと、ユーザーがマクロを挿入できる Eclipse のプラグインです。

RCP アプリケーションは順調に進んでいますが、Java にコードの一部を見てもらい、コンパイル時に「ああ、そのコードはこれを意味する」と言うところまで来ています。

たとえば、ユーザーはmacro1コードを表す識別子を使用してマクロを作成できますSystem.out.println("Hello World");。彼らは、次のfooようなクラスでそれを使用したいと考えています。

class foo{

    //lots of java....

    macro1

    //lots more java
}

ユーザーにクラスを実行してもらいたいのですが、Java がコンパイルされると、そのmacro1値に置き換えられます。

私はこれをしばらく調べていて、JavaCC を少し読んで、Ants Replace Task を調べましたが、注釈の下のこの文字列を変換する必要があることを Java に通知するカスタム注釈を作成する道を進みたいと思います。特定のテキスト ファイルにある Java コードに置き換えられます。うまくいけば、次のような結果になります:

@ExpandMacro
macro1

私にはそれが可能なように思えますが、私が楽観的すぎるだけなのかどうかはわかりません! :)

また、私の懸念の 1 つは、プラグインとしてどの程度展開できるかということです。カスタム注釈を作成した場合、ユーザーが使用できるようにするにはどうすればよいですか?

アドバイス/洞察は非常に役に立ちます!

編集: Project Lombokも調べましたが、これは非常に興味深く見えます。しかし、lombok プロジェクトに必要なセットアップの量が多いため、デプロイ可能性が心配です。

4

2 に答える 2

0

これを行うための最良の方法は、注釈プロセッサ (Lombokg のようなもの) です。JSR 269 Pluggable Annotation Processing API の設定は簡単です。これは、jar とプロセッサが自動検出されるためです。

見てください:http://www.slideshare.net/PolymathicCoder/the-art-of-metaprogramming-in-Java 34ページ

于 2013-03-15T23:08:19.817 に答える
0

これを別の方法で見てください。動的言語を使用する方が良いと思います(たとえば、グルーヴィー)。Java でコードを記述し、それを Groovy で (コンパイルなしで) 動的に実行できます。これは、Java コードが groovy と互換性があるためです。したがって、macro1 を必要なものに置き換えて、このコードを実行するだけです。Groovyでできること

  • Javaのように見えるよりもコードを書く
  • マクロを実際のコードに置き換える
  • コンパイルせずにコードを実行する

読むためのリンク: http://groovy.codehaus.org/Embedding+Groovy http://groovy.codehaus.org/Differences+from+Java

于 2013-03-16T19:46:27.490 に答える