枚举== vs switch(一项)

时间:2018-01-12 17:53:53

标签: java performance enums conventions

注意:我正在研究测试这个问题,我只是觉得在我到达之前看到别人有答案是个好主意。

假设需要实现以下接口方法(Operation中的enum

public boolean supportsOperation(Operation op)

很明显,如果该类支持多个操作,您将使用一个开关,如果该类根本不支持操作,则返回false。我的问题是:

如果该类仅支持一种Operation类型,那么实现return op == Operation.SomeOperation之类的方法或使用类似的方法会更好和/或更快:

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

我注意到,当给定null时,第一个返回false,第二个抛出NullPointerException

1 个答案:

答案 0 :(得分:4)

更好是意见,但更快是可以回答的:它们完全相同。编译器非常有能力进行这种简单的优化(并且JIT获得第二次传递以进行更多优化)。你应该把时间花在更高效的事情上(比如实施你的运营)。

此外,如果您仍想进一步追求这个主题(好),我建议您至少观看What has my compiler done for me lately并使用gcc.godbolt.org