目标是实现一个通用的 Enum 翻译器。我知道Enum1和Enum2具有相同的值和相同的顺序。
目标是实现这样的东西:(这有效)
private static Enum1 translateEnum(Enum2 originalEnum) {
return Enum1.values()[originalEnum.ordinal()];
}
Run Code Online (Sandbox Code Playgroud)
但是我有几个枚举,所以我想制作一个通用方法:(这不起作用)
private static < T extends Enum<T>,G extends Enum<G>> T translateEnum(G originalEnum) {
return T.values()[originalEnum.ordinal()];
}
Run Code Online (Sandbox Code Playgroud)
我的问题是在T.values()编译器告诉我:
方法 values() 对于类型 T 是未定义的
你们知道我如何解决这个问题,或者你对我的问题有什么其他想法吗?
我的方法matches1()上的逻辑表达式有问题.
SonarQube告诉我有一个错误:
(expectedGlobalRule == null && actual != null)
SonarQube: 更改此条件,使其不会始终评估为"true".条件不应无条件地评估为"TRUE"或"FALSE"
我本质上是在做这个逻辑,以避免我的"块被执行"上的NPE.
matches1()
private boolean matches1(GbRule actual, GbRule expected) {
if(actual == null && expected == null) {
return true;
} else if((expected == null && actual != null) || (expected != null && actual == null)) {
return false;
} else {
//Block to be executed
}
}
Run Code Online (Sandbox Code Playgroud)
我颠倒了逻辑,看看SonarQube会告诉我什么,他并没有抱怨它. matches2()
private boolean matches2(GbRule actual, GbRule expected) {
if(actual == null && expected == …Run Code Online (Sandbox Code Playgroud)