java - 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;
}
}
}
解决方案
推荐阅读
- rest - 关于 REST API GET 与 POST PUT 的面试问题。为什么我不能使用 GET 来更新或创建资源。?
- javascript - 为什么我的 setTimeout 函数没有按我预期的方式记录?
- react-native - React Native 错误:“无法从“src\screens\Main.js”解析“react”
- regex - 匹配两个标签之间所有出现的单词 - 正则表达式
- python - 如何在同一个浏览器上打开两个链接
- java - 解析具有相同主体的其他类使用改造
- android - 实现对角文本视图/布局效果
- python - 通过 google colab 安装 python 3.7 作为默认 python
- c++ - 检测无向图代码中的循环时出错
- angular - 如何使用 MergeMap 或 FlatMap 或使用 rxJs-operators 的更好方法编写以下代码?