私はこのコードを持っている:GenericsをJavaでキャストするにはどうすればよいですか?
FVDTO.setStatus("fail");
List<String[]> invalidFields = new ArrayList<String[]>();
Iterator<ConstraintViolation<HazardSubmission>> iterator = cv.iterator();
while(iterator.hasNext()) {
ConstraintViolation<HazardSubmission> i = iterator.next();
String property = i.getPropertyPath().toString();
String message = i.getMessage();
invalidFields.add(new String[] { property, message });
}
FVDTO.setInvalidFields(invalidFields);
return new JsonResolution(FVDTO);
を私はDRYものを維持するためにいくつかを取り出してきたので、私はその後、他のクラスでそれを使用することができ、すなわちHazardSubmissionは一つのクラスであり、その他があるでしょう。以下のコードは、それのようにする必要が動作しません、ここで明らかに手動で<HazardSubmission>
をキャストする私の試みを、示しo.getClass();
public static List<String[]> GetInvalidProperties(Set<ConstraintViolation<Object>> cv, Object o) {
List<String[]> invalidFields = new ArrayList<String[]>();
Iterator<ConstraintViolation<HazardSubmission>> iterator = cv.iterator();
while(iterator.hasNext()) {
ConstraintViolation<HazardSubmission> i = iterator.next();
String property = i.getPropertyPath().toString();
String message = i.getMessage();
invalidFields.add(new String[] { property, message });
}
}私は本当に私は何を知っていないため、2番目のコードブロックに障害が発生した
そうするためには、一般的なオブジェクト型のparam 1のcvを渡したいと思って、何とか2番目のパラメータとして型に渡します。
どうすればいいですか?
言うことができる指定されたクラスやインタフェースを拡張する場合は、汎用的な方法
を探しているかもしれないと思うが、全体があなたがキャストする必要がないのでジェネリックを使用する点 – edthethird
あなたのメソッドが 'HazardSubmission'でのみ動作しているときに' Object'をパラメータに入れたいのですが? –