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番目の質問は、この問題を解決するための他のアプローチは何ですか?