자바의 switch 문은 객체 배열을 처리할 수 있나요?

Nov 19, 2025

메시지를 남겨주세요

안녕하세요! 스위치 공급업체로서 저는 오랫동안 스위치 세계에 깊이 관여해 왔습니다. 오늘은 매우 흥미로운 주제인 Java의 스위치 문이 객체 배열을 처리할 수 있는지에 대해 자세히 알아보고 싶습니다.

기본부터 시작해 보겠습니다. Java에 익숙하지 않은 사람들을 위해 설명하자면, 스위치 문은 변수가 값 목록과 같은지 테스트할 수 있는 제어 흐름 문입니다. 단일 변수를 기반으로 처리해야 할 다양한 사례가 있을 때 편리한 도구입니다. 그러나 객체 배열의 경우 상황이 좀 더 복잡해집니다.

Java에서 switch 문은 특정 유형에서만 작동할 수 있습니다. 여기에는 int, byte, short, char 및 해당 래퍼 클래스(Integer, Byte, Short, Character)와 같은 기본 유형이 포함됩니다. 또한 Java 7부터 시작하는 String 유형과 enum 유형을 지원합니다. 불행하게도 객체 배열은 이 목록에 없습니다.

이 제한의 이유는 스위치 문이 내부적으로 구현되는 방식 때문입니다. Java는 switch 문을 일련의 비교 작업으로 컴파일합니다. 기본 유형 및 문자열의 경우 이러한 비교는 간단합니다. 그러나 객체 배열의 경우에는 그렇게 간단하지 않습니다. 객체 배열은 다양한 객체를 보유할 수 있으며 배열을 비교하는 것은 단일 값을 비교하는 것만큼 쉽지 않습니다. Java에서는 배열이 내용이 아닌 참조로 비교되기 때문에 "이 객체 배열이 해당 객체 배열과 같은지"라고 말할 수 없습니다.

예를 들어 보겠습니다. 사용자 정의 개체의 배열이 있다고 가정해 보겠습니다.사람사물. 각사람개체에는 이름, 나이 및 기타 속성이 있습니다. 다양한 배열을 처리하기 위해 switch 문을 사용할 수 있다고 생각할 수도 있습니다.사람사물. 하지만 다음과 같은 작업을 수행하려고 하면 다음과 같습니다.

Person[] personArray1 = {new Person("앨리스", 25), new Person("밥", 30)}; Person[] personArray2 = {new Person("찰리", 35), new Person("데이비드", 40)}; // 이것은 작동하지 않습니다. switch (personArray1) { case personArray2: System.out.println("Arrays areequal"); 부서지다; 기본값: System.out.println("배열이 동일하지 않습니다."); }

Java 컴파일러에서 오류가 발생합니다. switch 문에서 개체 배열을 처리하는 방법을 모릅니다.

그렇다면 switch 문과 유사한 방식으로 다양한 객체 배열을 처리해야 하는 경우 어떻게 할 수 있습니까? 글쎄요, if - else if 체인을 사용할 수 있습니다. if - else if를 사용하여 위의 예제를 다시 작성하는 방법은 다음과 같습니다.

Person[] personArray1 = {new Person("앨리스", 25), new Person("밥", 30)}; Person[] personArray2 = {new Person("찰리", 35), new Person("데이비드", 40)}; if (Arrays.equals(personArray1, personArray2)) { System.out.println("배열이 동일합니다."); } else { System.out.println("배열이 동일하지 않습니다."); }

그만큼배열.equals()메소드는 두 배열의 내용을 비교하는데, 이는 객체 배열을 다룰 때 실제로 원하는 것입니다.

이제 현실 세계의 스위치에 대해 조금 이야기해 보겠습니다. 저는 스위치 공급업체로서 매일 온갖 종류의 스위치를 다루고 있습니다. 예를 들어, 우리는D4A - 3101N 범용 리미트 스위치. 이는 범용 애플리케이션에 적합한 스위치입니다. 이는 신뢰할 수 있으며 다양한 조건을 처리할 수 있습니다. 소규모 DIY 프로젝트에서 작업하든 대규모 산업용 애플리케이션에서 작업하든 이 스위치는 유용할 수 있습니다.

우리 카탈로그의 또 다른 인기 있는 스위치는 다음과 같습니다.151166285 AZM161SK - 12/12RKA - 024 안전 스위치. 안전 스위치는 많은 산업 환경에서 매우 중요합니다. 특정 조건이 충족되면 전원을 차단하여 사고 예방에 도움을 줍니다. 이 특별한 스위치는 최고의 안전을 보장하기 위해 고품질 재료와 첨단 기술로 설계되었습니다.

그리고 거기에는Z - 15GQ - B Q8 Q21 Q22 기본 스위치. 이것은 간단하면서도 효과적인 스위치입니다. 안정적인 ON-OFF 기능만 필요한 기본 전기 회로에 적합합니다.

자바로 돌아갑니다. switch 문은 개체 배열을 직접 처리할 수 없지만 해결 방법이 있습니다. 한 가지 대안적인 접근 방식은 지도를 사용하는 것입니다. 키가 객체 배열에 대한 고유 식별자이고 값이 수행하려는 작업인 맵을 생성할 수 있습니다.

java.util.HashMap 가져오기; java.util.Map 가져오기; class ArrayHandler { public static void main(String[] args) { Person[] personArray1 = {new Person("Alice", 25), new Person("Bob", 30)}; Person[] personArray2 = {new Person("찰리", 35), new Person("데이비드", 40)}; Map<String, Runnable> actionMap = new HashMap<>(); actionMap.put("array1", () -> System.out.println("배열 1 처리 중")); actionMap.put("array2", () -> System.out.println("배열 2 처리")); // 배열에 대한 고유 식별자를 얻을 수 있는 방법이 있다고 가정합니다. String arrayIdentifier = getArrayIdentifier(personArray1); if (actionMap.containsKey(arrayIdentifier)) { actionMap.get(arrayIdentifier).run(); } else { System.out.println("이 배열에 대해 정의된 작업이 없습니다."); } } private static String getArrayIdentifier(Person[] array) { // 이것은 간단한 예이며, 실제로는 더 복잡한 논리가 필요할 수 있습니다. return array.length + "-" + array[0].getName(); } } class Person { 개인 문자열 이름; 비공개 연령; public Person(문자열 이름, int age) { this.name = 이름; this.나이 = 나이; } public String getName() { 반환 이름; } }

이 예에서는 맵을 사용하여 고유 식별자를 작업과 연결합니다. 단순한 스위치 문보다 코드가 조금 더 많지만 객체 배열을 처리할 수 있는 유연성을 제공합니다.

151166285 Safety SwitchZ-15GQ-B Q8 Q21 Q22 Basic Switch

요약하자면, Java의 스위치 문은 구현 제한으로 인해 객체 배열을 처리할 수 없습니다. 하지만 걱정하지 마세요. 유사한 기능을 구현하는 다른 방법도 있습니다.

고품질 스위치 시장에 있다면, 그것이 무엇이든 상관없습니다.D4A - 3101N 범용 리미트 스위치,151166285 AZM161SK - 12/12RKA - 024 안전 스위치, 또는Z - 15GQ - B Q8 Q21 Q22 기본 스위치, 구매 및 협상을 위해 언제든지 문의해 주세요. 우리는 귀하에게 최고의 제품과 서비스를 제공하기 위해 왔습니다.

참고자료

  • 오라클 자바 문서
  • Joshua Bloch의 효과적인 Java

문의 보내기