> Java > java지도 시간 > Kotlin 봉인 클래스와 Java Enum(및 봉인 인터페이스!): 제한된 계층 구조 이야기

Kotlin 봉인 클래스와 Java Enum(및 봉인 인터페이스!): 제한된 계층 구조 이야기

Patricia Arquette
풀어 주다: 2024-11-27 07:16:13
원래의
456명이 탐색했습니다.

Kotlin Sealed Classes vs. Java Enums (and Sealed Interfaces!): A Tale of Limited Hierarchies

당신이 칙령을 내린 왕이라고 상상해 보세요. 특정 개인만이 왕위를 물려받을 수 있고 다른 누구도 왕위를 물려받을 수 없다고 선언하고 싶습니다. 프로그래밍 세계에서 그것은 일종의 봉인된 수업과 같습니다! 계층 구조를 제한하여 특정 하위 클래스 집합만 존재할 수 있도록 합니다. ?

자바: 열거형 왕국

Java에는 고정된 상수 집합을 나타내는 특별한 유형의 클래스인 열거형이 있습니다. 마치 왕실과도 같아서 각 구성원은 특정 역할을 갖고 있으며 새로운 구성원을 추가할 수는 없습니다.

// Java
public enum RoyalTitle {
    KING,
    QUEEN,
    PRINCE,
    PRINCESS
}
로그인 후 복사

Enum은 제한된 옵션 집합을 표현하는 데 적합하지만 클래스의 유연성이 부족합니다. 새 구성원을 추가하거나 추가 동작으로 확장할 수 없습니다. 이는 새로운 직책이나 역할을 맡을 여지가 없는 경직된 법원 구조를 갖는 것과 같습니다. ?

Kotlin: 봉인된 클래스 왕조

Kotlin에서는 하위 클래스의 제한된 계층 구조를 정의할 수 있는 봉인 클래스를 도입했습니다. 봉인된 클래스와 동일한 파일에 정의된 하위 클래스만 이 클래스에서 상속할 수 있습니다. 마치 왕이 왕위에 오를 자격이 있는 특정 개인을 선언하는 것과 같습니다.

// Kotlin
sealed class RoyalTitle {
    object King : RoyalTitle()
    object Queen : RoyalTitle()
    data class Prince(val name: String) : RoyalTitle()
    data class Princess(val name: String) : RoyalTitle()
}
로그인 후 복사

밀폐 수업은 여러 가지 장점을 제공합니다.

  • 제어된 상속: 의도하지 않은 하위 클래스가 생성되는 것을 방지하여 유형 안전성을 보장합니다.
  • 완전한 when 문: 봉인된 클래스와 함께 when 표현식을 사용할 때 컴파일러는 가능한 모든 하위 클래스를 포함했는지 확인하여 오류를 방지할 수 있습니다.
  • 유연성: 하위 클래스는 다양한 속성과 동작을 가질 수 있어 열거형보다 더 많은 표현력을 제공합니다.

Java의 대응 요소: 봉인된 인터페이스(Java 17)

Java는 열거형의 한계를 인식하여 Java 17에서 봉인된 인터페이스를 도입했습니다. 이를 통해 Kotlin의 봉인된 클래스와 유사하게 허용되는 하위 클래스의 제한된 집합으로 인터페이스를 정의할 수 있습니다.

// Java
public sealed interface RoyalTitle permits King, Queen, Prince, Princess {}
로그인 후 복사

이는 상속 계층 구조에 대한 제어를 유지하면서 열거형보다 더 많은 유연성을 제공합니다. 그러나 이는 여전히 Java의 비교적 새로운 기능이며 Kotlin의 봉인 클래스는 더 간결한 구문과 when 표현식과의 통합을 제공합니다.

결론적으로 (왕실 선언문)

Kotlin 봉인 클래스는 제한된 클래스 계층 구조를 정의하는 강력한 방법을 제공하여 Java 열거형보다 더 많은 유연성과 유형 안전성을 제공합니다. 봉인된 인터페이스가 추가되면서 Java가 따라잡았지만 Kotlin의 봉인된 클래스는 여전히 더 성숙하고 표현력이 풍부한 솔루션으로 남아 있습니다. 따라서 왕실의 칙령으로 자신의 규정을 다스릴 준비가 되었다면 봉인 클래스의 힘을 받아들이십시오! ?

추신 아직도 열거형에 의존하고 있는 Java 개발자라면 걱정하지 마세요. 더 많은 유연성을 위해 언제든지 봉인된 인터페이스를 탐색할 수 있습니다. Kotlin의 봉인 클래스만큼 장엄하지는 않을 수도 있지만, 보다 통제된 상속 왕국을 향한 한 단계입니다! ?

위 내용은 Kotlin 봉인 클래스와 Java Enum(및 봉인 인터페이스!): 제한된 계층 구조 이야기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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