私のアプリケーションでBeanの検証に関する検証エラーのビルド例外メッセージを手助けするためのユーティリティメソッドを記述しようとしています。Javaジェネリックスのワイルドカードオペレータ
Set<ConstraintViolation<BasicContactInformation>> constraintViolations = validator.validate(basicContactInformation);
if(!CollectionUtils.isEmpty(constraintViolations)){
throw new CustomerAccountException(LoggingUtils.getLoggingOutput("Unable to update customer contact information", constraintViolations));
}
を私は他のBeanのために同じことをやっている:私は私のオブジェクト(この場合は、BasicContactInformation)を検証するために行くとき、次のように私はそれを行います。ユーティリティーメソッドは、制約の検証のセットとともに例外メッセージのプレフィックスを取り、きれいにフォーマットされた出力メッセージを作成します。問題は、どんなタイプの制約違反も受け入れることができるようにメッセージを構築する方法を理解できないということです。それはキャストカント言うように、私は次のことを試してみましたが、それは有効ではないようです。
public static String getLoggingOutput(String prefix, Set<ConstraintViolation<?>> violations){
StringBuilder outputBuilder = new StringBuilder(prefix);
if(!CollectionUtils.isEmpty(violations)){
for(ConstraintViolation<?> currentViolation: violations){
outputBuilder.append("[");
outputBuilder.append(currentViolation.getMessage());
outputBuilder.append("]");
}
}
return outputBuilder.toString();
}
これは
The method getLoggingOutput(String, Set<ConstraintViolation<?>>) in the type LoggingUtils is not applicable for the arguments (String, Set<ConstraintViolation<BasicContactInformation>>)
コンパイルエラーである任意のアイデアをどのようなメソッドのシグネチャがすべきのようそれは制約違反の任意のセットのために働くようになりますか?最も下に
public static <T> String getLoggingOutput(String prefix,
Set<ConstraintViolation<T>> violations) {
// ...
}
:私は