我刚刚注意到一个奇怪的案例,想看看是否有人能够解释它。这是我的情况:
private enum Classifiers {
NEURAL_NETWORK, NEAREST_NEIGHBOURS, IDENTITY;
}
private ClassifierInterface getClassifierInstance(Classifiers classifier) {
switch (classifier) {
case NEURAL_NETWORK:
return new DoubleLayeredNeuralNetwork();
case NEAREST_NEIGHBOURS:
return new NearestNeighbours();
case IDENTITY:
return new IdentityClassifier();
}
return null; // If I comment out this line I get compilation error
}
见评论。我希望Unreachable code
该行会报告该错误。相反,Method must return value
如果我注释掉这一行,我会得到错误。但是,程序流无法通过那里。
我什至认为这将是null
传入值的情况的保护情况,但正如预期的那样,这会触发NullPointerException
切换条件。
我不switch
经常使用,可能我在这里遗漏了一些东西。有人可以尝试帮助理解这种行为吗?