CodeFlowCodeFlowJavaプロジェクトからすべての文字列を抽出する125Javaプロジェクトからすべての文字列を抽出する私は、すべての文字列リテラルを解析して抽出し、古いJava定数を再生するようにそれらをファイルに入れる必要がある、かなり多数のソースファイルを持っています。`Constants.java`では、以下のようになります。1つの理由は、一貫性とコードの読みやすさのためです。`GWT`を使っていることです。これはJavaプロパティテキストファイルメカニズムをサポートしていません。replaceタスクを使って)。`IDE`がすでにこの種のことを自動的にやるのかと思いました。Answer21Eclipseはこれを自動的に行います。strings]を選択します。これはあなたが要求したこと(Constants.javaファイル内の文字列をStringsとして持つこと)を正確には実行しませんが、使用される方法は確かに非常に強力です。ロケールに応じて動的にロードできるプロパティファイルにそれらを移動します。あなたが提案するように別々のJavaソースファイルにそれらを持つことはあなたがあなたのアプリケーションにすべての言語を一度に持っていることを意味するか、ロケールによって異なるアプリケーションを出荷するでしょう。基本的なものでも英語と日本語で出荷する必要があるアプリケーションには、これを使用します。当社のより複雑なアプリケーションは12の言語で出荷されます。:-).Javaファイルでそれらを望むなら、既に述べた欠点にもかかわらず、自由形式のJavaソースから文字列を抽出して抽出するよりも、プロパティファイルをJavaソースファイルに変形するプログラムを書く方がはるかに簡単です。その後、実行時にそれらをロードするのではなく、(別のクラスの)組み込み文字列を使用するようにAccessorクラスを変更するだけです。*ソリューションを検討することができます。あなたはそれからあなたのソースコードを解析してあなたが望むことをするASTプログラムを書くかもしれません。Eclipseのコーナー記事にあります。詳細は、http://help.eclipseにもあります。[eclipseヘルプ]。Eclipseでのドメイン固有言語の埋め込みの自動化のセクション5のリスト5にあります。*]、https://github.com/search?q=%22org.eclipse.jdt.core.dom.ASTVisitor%22と並んでsource1これをしたくない理由がいくつかあります。このような生成されたファイル(eclipse関数については私は知りませんでした)は、たとえばテストクラスのコンストラクター引数として設定している文字列と実際に必要なものを区別しないという事実は別として、もっと大きな問題は、あなたのすべての公開静的ファイナルがあなたのクラスにコンパイルされるということです、そしてあなたがクラスの振る舞いを変更したいなら、あなたは定数を保持するクラスだけでなくそれを参照するすべてを変更する必要があります。Diabloが言ったことを完全に認めます。その機能も使っています。strings"関数は2つのファイル、クラスMessages.classとプロパティファイルmessages.propertiesを作成します。"の文字列に入力したキーを使って、文字列リテラルのすべての直接使用をリダイレクトします。彼が言ったように、あなたは単にプロパティファイルを変更することができ、テキストを変更する必要がある場合はクラスを変更する必要はありません。1つの利点はこれです。文字列リテラルをプロパティファイルに抽出する方法では、コードを変更せずに*任意の言語でソース言語を自由に翻訳できます。プロパティファイルローダーは、対応するファイルと言語ISOコードを使用して、ターゲット言語ファイルを自動的にロードします。そのため、コードを実行するプラットフォームについて心配する必要はありません。適切な言語が(ほぼ)自動的に選択されます。ResourceBundleのドキュメントを参照してください。engineを調べて、ソース変換をスクリプト化することをお勧めします。