2016-04-28 16 views
-2

私の教師の一人は、switch文の使用を避けるべきだと言いました。 なぜですか?それについて何が悪いですか?Javaでswitch文を避けるのはなぜですか?

+4

実際はそうではありません。 if文が大きなラダーに渡されると、そのブロックを実行して底に出る – karina

+1

先生は間違っています。 –

+1

もし私が推測しなければならなかったのは、あなたの先生が新入生の文法がちょっと変わったと思っていると思います。しかし、紛らわしいので、何かを避けるべきではありません。あなたは、switch文を不必要に恐れているだけで、長い時間がかかるでしょう。プログラミングにおいて、異なる状況は異なる解決策を必要とする。場合によっては、switch文がif-elseよりはるかに簡単です。 – bpgeck

答えて

1

あなたのインストラクターは、スイッチステートメントを松葉杖として使用する状況にあなたが陥るのを防ぐために努力している可能性があります。状況が適切な場合がありますが、ポリモーフィズムでよりよく処理されるものをハードコードすることがよくあります。例えば

Car c = getCar(); 
switch(c){ 
    case FordCar: 
    driveFordCar(); 
    break; 
    case ToyotaCar: 
    driveToyotaCar(); 
    break; 
    default: 
    break; 
} 

次いでFordCarとToyotaCarでそれを実装する、抽象クラスまたはインタフェースカーに抽象メソッドdriveCar()を置くことによってより良い処理されます。フォルクスワーゲン車のサポートを追加したい場合は、新しいVolkswagenCarクラスにdriveCarの実装を追加する方がクリーンであると考えてください(そうしなければコンパイラは文句を言います!)ステートメント。

+0

これは、 'Car'がenumである場合にのみ機能します。あるいは、もちろんintを使うこともできます。 – shmosel

0

if/elseif/elseとswitch文の両方に用途があります。どちらもJavaコンパイラによって同じ/類似のバイトコードに変換される可能性が高いため、他のものよりも良くないか悪いです。

ifまたはelseif条件が一致すると、そのブロック内のコードが実行され、if/elseif/else "ladder"の最後にスキップされます。 switch文では、条件が一致すると、一致した "case"から "break;"までコードが続きます。見つかった。このようにして、他の一致条件を実行することが可能である。

関連する問題