> Java > java지도 시간 > 본문

Java 21에서 Switch를 사용한 패턴 일치의 강력한 기능 살펴보기

WBOY
풀어 주다: 2024-08-15 06:43:32
원래의
936명이 탐색했습니다.

Exploring the Power of Pattern Matching with Switch in Java 21

Switch를 사용한 패턴 일치의 인기 있는 사용 사례 중 하나는 프로그램에서 다양한 유형의 데이터로 작업할 때입니다. 다양한 유형의 센서가 있고 현재 온도를 반환하는 WeatherStation 클래스의 다음 예를 살펴보세요.

`공개 수업 WeatherStation {

private Sensor sensor;

 public double getCurrentTemperature() {
    return switch (sensor) {
        case TemperatureSensor t -> t.reading();
        case HumiditySensor h -> h.reading() * 0.9; // apply a 10% moisture correction
        default -> 0.0; // in case of an unhandled sensor type, return 0
    };
}
로그인 후 복사

}
`
여기서는 선택기 표현식에 센서 인터페이스가 사용되고 케이스 레이블이 특정 센서 구현인 온도 센서 및 습도 센서에 기반한 패턴을 사용하는 것을 볼 수 있습니다. 이를 통해 스위치 문에서 다양한 유형의 데이터를 보다 간결하고 읽기 쉽게 처리할 수 있습니다.

스위치를 사용한 패턴 일치의 또 다른 사용 사례는 열거형을 처리할 때입니다. 패턴 일치가 도입되기 전에는 열거형을 케이스 레이블의 상수로만 사용할 수 있었기 때문에 스위치 문에서 테스트할 수 있는 값이 제한되었습니다. 새로운 기능을 사용하면 이제 케이스 레이블에서 열거형을 한정할 수 있으므로 더욱 정확하고 유연한 일치가 가능해집니다.

공개 열거형 방향 {
북쪽,
이스트
남쪽,
웨스트
}

공공 무효 이동(방향 방향) {
스위치(방향) {
케이스 NORTH,NORTH_WEST,NORTH_EAST -> moveUp();
케이스 EAST,EAST_NORTH,EAST_SOUTH -> moveRight();
케이스 SOUTH, SOUTH_EAST, SOUTH_WEST -> moveDown();
케이스 WEST,WEST_NORTH,WEST_SOUTH -> moveLeft();
}
}

여기서 move() 메서드는 switch 문을 사용하여 지정된 Direction 열거형 값을 기반으로 다양한 방향으로의 이동을 쉽게 처리합니다. 패턴 일치를 사용하면 NORTH_WEST 및 EAST_SOUTH와 같은 방향 조합을 지정하여 코드를 더욱 강력하고 유연하게 만들 수도 있습니다.

마지막으로 패턴 일치가 스위치 문의 오류 처리에 어떻게 도움이 되는지 보여주는 예를 살펴보겠습니다. 기존 스위치에서는 선택기 표현식이 케이스 레이블과 일치하지 않으면 기본 케이스를 사용하여 오류를 처리할 수 있습니다. 그러나 이는 여러 케이스 레이블을 처리할 때 지루할 수 있으며 코드 중복으로 이어질 수 있습니다. 패턴 일치에서는 선택기 표현식과 일치하는 케이스 레이블 패턴이 없으면 예외가 발생하므로 오류 처리가 더욱 균일해지고 오류 발생 가능성이 줄어듭니다.

public String getPlanetaryObject(PlanetaryBody body) {
리턴 스위치(본체) {
케이스 플래닛 p && p.getMass() > 1e29 -> p.getName() + "는 가스 거인입니다";
케이스 플래닛 p && p.getMass() > 1e23 -> p.getName() + "는 암석 행성입니다.";
케이스 Star s && s.getLuminosity() > 1e32 -> s.getName() + "는 밝은 별입니다";
케이스 Star s && s.getLuminosity() < 1e28 -> s.getName() + "는 희미한 별입니다";
기본값 -> throw new MatchException("행성 객체의 유형을 확인할 수 없습니다: " + body.getName());
};
}

이 예에서 getPlanetaryObject() 메서드는 행성이나 별일 수 있는 PlanetaryBody 개체를 사용합니다. 케이스 라벨에 사용되는 패턴은 행성의 질량이나 별의 광도와 같은 추가 조건을 고려합니다. 일치하는 패턴이 없으면 MatchException이 발생하여 오류 처리의 일관성을 높이고 잠재적인 오류를 방지합니다.

결론
스위치 패턴 매칭은 최근 Java에 도입된 가장 중요한 기능 중 하나입니다. 이는 보다 유연하고 간결한 제어 흐름 구조를 가능하게 합니다.

Java SE 21 Professional Certified Developer 인증을 취득하여 Java 기술을 업그레이드하세요.

위 내용은 Java 21에서 Switch를 사용한 패턴 일치의 강력한 기능 살펴보기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!