1

Apache Wicket、Hibernate Criteria API、およびその他のJavaライブラリは、モデルデータにアクセスするための文字列としてプロパティ名を使用します。例えば:

new PropertyModel(address, "street");

これは、address.getStreet()メソッドを呼び出すことによってアドレスオブジェクトからの「ストリート」プロパティの読み取りをサポートするモデルを定義します。

1つの問題は、このような文字列リテラルは不便であり、Javaなどの静的に型付けされた言語では自然に見えないことです。プロパティ名にタイプミスを入れることができます(例: "stret")。このコード行が実行されるときにのみ気付くでしょう。その他の不便な点は、この文字列リテラル「street」とコードで表現されたAddressクラスのstreetプロパティの間に直接リンクがないため、自動リファクタリングによってコードが破損することです。

この問題を解決する1つの方法は、モデルクラスで定数を使用することです。

class Address {
    public static final String P_STREET = "street";
...

すべてのプロパティ名が1か所に表示されます。また、生成された.classファイルを検査するか、アプリケーションの起動時にリフレクションapiを使用することで、コードが実行される前にそれらが正しいことを確認できます。したがって、私の最初の質問は、このアプローチを使用する場合、このチェックを実行してすべてのエラーを見つけるために利用できるツールはありますか?できればMavenと統合するので、このチェックはビルドプロセスの一部になります。

2番目の質問は、この問題を解決するための他のアプローチは何ですか?

4

1 に答える 1

2

これは、カスタム アノテーション処理の良いユース ケースだと思います ( JDK api へのリンク)。注釈付きクラスの内容が正しいことをコンパイル時にチェックするために使用できます。または、必要なフィールドをクラスに動的に追加するために使用できます。Project Lombokは、何が可能かについてのアイデアを提供します。

于 2012-07-24T07:55:28.797 に答える