Java 프로그래밍 언어를 처음 사용하는 사람입니다. 그래서 나는 샘플 프로그램을 시험해 보았다. (예 : Enum Comparison with Switch-Case Statement). 위의 프로그램은 내가 1 케이스 (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
키워드가 필수 항목이며, 키워드를 누락하면 컴파일 시간 오류가 발생합니다. 하지만 자바에서는 예외적 인 것으로 나타났습니다 (No Compile time error for missing the break keyword
).
따라서 Main
메서드에서 나는 Company.Google
을 인수로 전달합니다. break 키워드는 첫 번째 경우에서 누락되었으므로 (Case Google:
) 두 번째 대소 문자 (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++에서 상속받은 기능으로, 동일한 방식으로 작동합니다. 여기에는 유형 불일치가 없습니다 (열거 형 상수는 모두 동일한 유형 인 '회사'). – Jesper
'toString()'메소드를 오버라이드 할 수 없습니까? –