興味深い事例が 1 つあることに気付き、誰かがそれを説明できるかどうかを知りたいと思いました。これが私のケースです:
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
あまり頻繁に使用しません。おそらくここで何かが欠けています。誰かがこの振る舞いを理解するのを手伝ってくれませんか?