类是原始类型。对泛型类型 Class 的引用应该参数化

2024-01-10

我有以下课程(来自简单的 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.ValidatorSpring 2.5 开始的课程。

如果我尝试向该方法添加参数,例如,supports 方法会显示警告(类是原始类型。对泛型类型类的引用应该参数化)

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.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

类是原始类型。对泛型类型 Class 的引用应该参数化 的相关文章

随机推荐