小编Gab*_*yot的帖子

在泛型类型上调用 Enum.values()

目标是实现一个通用的 Enum 翻译器。我知道Enum1Enum2具有相同的值和相同的顺序。

目标是实现这样的东西:(这有效)

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 是未定义的

你们知道我如何解决这个问题,或者你对我的问题有什么其他想法吗?

java enums generic-programming

6
推荐指数
1
解决办法
2255
查看次数

SonarQube - 布尔逻辑正确性 -

我的方法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)

java boolean-expression sonarqube

3
推荐指数
1
解决办法
1676
查看次数