내 모델 중 일부에 대한 테스트 클래스를 설정하기 위해 spring, hibernate 및 junit을 사용하고 있습니다. 내 모델의자바 제네릭? extends Clazz
모든 BASEMODEL
을 확장 I 내 테스트 클래스에서 다음과 같은 기능이 있습니다
void printValidation(Set<ConstraintViolation<? extends BaseModel>> v){
Iterator<ConstraintViolation<? extends BaseModel>> it = v.iterator();
while (it.hasNext()) {
ConstraintViolation<? extends BaseModel> violation = it.next();
l.info("Validation error {}", violation);
}
}
내가 테스트 케이스 안쪽과 같이 사용 :
eModel = new Entry(); //This class extends BaseModel
Set<ConstraintViolation<? extends BaseModel>> v = validator.validate(eModel);
assertTrue("There should be validation errors...", v.size() > 0);
printValidation(v);
에게 그러나 Eclipse에서 다음 메시지가 나타나며 작동하지 않는 것 같습니다. 형식 불일치 : Set<ConstraintViolation<Entry>>
(으)로 변환 할 수 없습니다. to Set<ConstraintViolation<? extends BaseModel>>
나는 많은 기능을 가지고 있는데, 만약이 기능이 <? extends BaseEntry>
대신에 <Entry>
이된다. 나는 이것을 테스트하고있는 많은 모델을 가지고 있으며, 이것을 복제 할 필요가없는 일반적인 제네릭의 요점이다.
여기서 내가 무엇을 놓치고 있는지, 나는 validator.validate가 반환하는 것과 관련이 있다고 생각합니까?
** void <T extends BaseModel> printValidation(Set<ConstraintViolation<T>> v)
거의 도움을 주셔서 감사합니다. – mikeb
네 말이 맞아! 나는 빠른 것에 조금 타이프했다! !! – geoand
질문의 미래 시청자를 혼동하지 않도록 내 답변을 업데이트했습니다. 댓글 주셔서 감사합니다. – geoand