클래스는 원시 유형입니다. 제네릭 유형 클래스에 대한 참조 매개 변수화되어야 함
다음 클래스가 있습니다 (간단한 Spring 튜토리얼에서)
public class CarValidator implements Validator {
public boolean supports(Class aClass) {
return Car.class.equals(aClass);
}
public void validate(Object obj, Errors errors) {
Car car = (Car) obj;
ValidationUtils.rejectIfEmptyOrWhitespace(errors, "model", "field.required", "Required field");
ValidationUtils.rejectIfEmptyOrWhitespace(errors, "price", "field.required", "Required field");
if( ! errors.hasFieldErrors("price")) {
if (car.getPrice().intValue() == 0) {
errors.rejectValue("price", "not_zero", "Can't be free!");
}
}
}
}
Validator 클래스는 org.springframework.validation.Validator
Spring 2.5 의 클래스입니다.
다음과 같은 매개 변수를 추가하려고하면 supports 메소드가 경고를 표시합니다 (Class는 원시 유형입니다. 제네릭 유형 클래스에 대한 참조는 매개 변수화되어야 함).
public boolean supports(Class<?> aClass) ...
다음과 같은 오류가 발생합니다.
The method supports(Class<?>) of type CarValidator has the same erasure as supports(Class) of type Validator but does not override it
이 유형의 질문에 대한 많은 스레드가 있지만 완전한 답변을 얻고 실제로 문제를 숨기지 않고 실제로 이해하고 싶습니다 @SupressWarnings
!
인터페이스는 원시 유형으로 메소드를 선언합니다. 이 경우 경고없이 멋지게 재정의 할 수 없습니다.
문제의 원인은 Spring 인터페이스가 Java 1.4 호환으로 선언되었다는 것입니다. Spring 3.0은 모든 클래스를 Java 1.5 호환으로 제공하므로 문제를 해결할 수 있습니다. 업그레이드하기 전에 경고 또는 @SuppressWarning
.
인터페이스는 원시 유형을 사용하도록 강제하기 때문에 (즉, 올바른 유형 정보를 지정할 수 없음)를 사용하지 않는 한 경고없이 구현할 수 없습니다 @SupressWarnings
.
유일한 해결 방법은 인터페이스를 수정하는 것입니다 (예 : 정의하도록 설정 boolean supports(Class<?> aClass)
).
'UFO ET IT' 카테고리의 다른 글
어떤 스택 오버플로 스타일 마크 다운 (WMD) JavaScript 편집기를 사용해야합니까? (0) | 2020.11.28 |
---|---|
IE10에서 자리 표시 자에 초점 유지 (0) | 2020.11.28 |
언어 사양에 설명 된대로 C # 유형 추론을 이해하는 데 문제가 있습니다. (0) | 2020.11.28 |
SQL Server에서 " 'NT AUTHORITY \ ANONYMOUS LOGON'사용자에 대한 로그인 실패"오류를 반환합니다. (0) | 2020.11.28 |
Android Studio-SDK가 오래되었거나 템플릿이 없습니다. (0) | 2020.11.28 |