Enum == vs switch(一项)

Enum == vs switch (one item)

注意:我正在做一些事情来测试这个,我只是觉得在我开始之前看到别人有答案是个好主意。

假设需要实现以下接口方法(其中 Operationenum 中)

public boolean supportsOperation(Operation op)

很明显,如果class支持多个操作,你就用switch,如果class根本不支持操作,你return错误的。我的问题是:

如果 class 只支持一种类型的 Operation,那么 and/or 更快地实现 return op == Operation.SomeOperation 之类的方法或使用类似的方法会更好吗:

switch (op){
    case SomeOperation:
        return true;
    default:
        return false;
}

我确实注意到,当给定 null 时,第一个 returns false,第二个抛出 NullPointerException.

更好 是意见,但是 更快 是可以回答的:它们 完全 是一样的.编译器完全有能力进行此类微不足道的优化(并且 JIT 获得第二遍以进行更多优化)。您应该将时间花在更有成效的事情上(例如实施您的操作)。

此外,如果你还想进一步研究这个话题(好),我建议你至少观看What has my compiler done for me lately and play with gcc.godbolt.org