私はJavaプログラミング言語の初心者です。そこで私はサンプルプログラムを試しました(つまり、 - Enum Comparison with Switch-Case Statement)。あなたは上記のプログラムは、あなたは私が第一ケース(i.e:- Case Google:
)でbreak
キーワードを逃していることに気付くことができます参照してください場合は、以下のJava - Enumとスイッチケースステートメントの比較
public class TestClass {
public enum Company {
Google(1),
Microsoft(2),
JPMorgan(3),
WellsFargo(4);
private int companyRatings;
private Company(int companyValue) {
this.companyRatings = companyValue;
}
}
public static void enumComparison(Company type) {
switch (type) {
case Google:
System.out.println("Company Name : " + type + " - Company Position : " + type.companyRatings);
case Microsoft:
System.out.println("Company Name : " + type + " - Company Position : " + type.companyRatings);
break;
case WellsFargo:
System.out.println("Company Name : " + type + " - Company Position : " + type.companyRatings);
break;
default:
System.out.println("Company Name : " + type + " - Company Position : " + type.companyRatings);
break;
}
}
public static void main(String[] args) {
enumComparison(Company.Google);
}
}
だからあなたの参照のためのプログラムです。 C#
ではswitchステートメントでbreak
キーワードが必須であるため、キーワードが見つからないとコンパイル時エラーが発生します。しかし、私はJavaではそれが当てはまらないことに気づいた(No Compile time error for missing the break keyword
)。 Main
メソッドでは、Company.Google
を引数として渡しています。 breakキーワードは、1番目のケース(Case Google:
)ではなく、2番目のケース(Case Microsoft:
)に移動しているので、型の不一致があっても値を出力します。それは不思議で、なぜこれが起こるのか分かりません。したがって、重複した値が出力されます。よくわかりません。
出力
Company Name : Google - Company Position : 1
Company Name : Google - Company Position : 1
これを読む必要があります。https://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html –
これは、 'break'や' return "または" throw "となり、実行は次のケースに落ちます。これは、JavaがC++から継承した機能で、同じ方法で動作します。ここでは型の不一致はありません(列挙型定数はすべて同じ型の 'Company'です)。 – Jesper
'toString()'メソッドをオーバーライドできませんでしたか? –