首页 > 解决方案 > Sonar Lint 抱怨工厂方法参数化泛型类型 - Spring Boot

问题描述

我有这个通用接口来验证请求并抛出自定义异常。然后我有一个实现这个接口的抽象类,它将具有跨请求共享的公共验证以及扩展这个抽象类的每个请求的实际实现类。我有一个工厂方法,它根据请求返回一个 bean。当我运行 sonar lint 时,它抱怨 getValidator(Action action) 的返回类型,消息是 "Provide the parameterized type for this generic" 。这是一个主要的代码气味,我想摆脱它。有一个更好的方法吗?还是我应该忽略它?

//Interface

@FunctionalInterface
public interface CustomValidation<T> {
    
    /**
     * Validate method to throw custom exception when bean validation fails
     *
     * @param t
     */
    void validate(String clientId, T t);
}

//Abstract Class

public abstract class AbstractCustomValidation<T> implements CustomValidation<T> {
  //do something
}

//Factory 

@Component
public class CustomValidatorFactory {
    
    @Autowired
    @Qualifier("a")
    private CustomValidation<A> a;
    
    @Autowired
    @Qualifier("b")
    private CustomValidation<B> b;
    
    @Autowired
    @Qualifier("c")
    private CustomValidation<C> c;
    
    
    @Autowired
    @Qualifier("d")
    private CustomValidation<D> d;
    
    public CustomValidation getValidator(Action action) {
        switch (action) {
            case A:
                return a;
            case B:
                return b;
            case C:
                return c;
            case D:
                return d;
            default:
                return null;
        }
    }
}

标签: javaspring-bootsonarlint

解决方案


推荐阅读