注意:我正在研究测试这个问题,我只是觉得在我到达之前看到别人有答案是个好主意。
假设需要实现以下接口方法(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
。
答案 0 :(得分:4)
更好是意见,但更快是可以回答的:它们完全相同。编译器非常有能力进行这种简单的优化(并且JIT获得第二次传递以进行更多优化)。你应该把时间花在更高效的事情上(比如实施你的运营)。
此外,如果您仍想进一步追求这个主题(好),我建议您至少观看What has my compiler done for me lately并使用gcc.godbolt.org。