如何解决类是原始类型对泛型类型Class的引用 应该参数化
接口使用原始类型声明该方法。在这种情况下,没有警告就无法很好地覆盖它。
问题的根源是Spring接口被声明为符合Java 1.4。请注意,Spring 3.0应该提供与Java
1.5兼容的所有类,因此可以解决您的问题。升级之前,我想您必须忍受警告或@SuppressWarning
。
解决方法
我有以下课程(来自简单的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","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是原始类型。对泛型类型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
!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。