と HogeWithB のいずれかである という ことを表現してる sealed class Hoge data class HogeWithA(val a: A) : Hoge() data class HogeWithB(val b: B) : Hoge() ※ Sealed Class は、実は Java 17 で Java にも正式に言語機能として追 加されている JEP 409 (JEP = JDK Enhancement Proposal) 前提知識編 8 / 37
◦ なし ◦ x sealed class ContactInfo data class EmailOnlyContactInfo(val emailContactInfo: EmailContactInfo): ContactInfo() data class PostalOnlyContactInfo(val postalContactInfo: PostalContactInfo): ContactInfo() data class EmailAndPostalContactInfo( val emailContactInfo: EmailContactInfo, val postalContactInfo: PostalContactInfo ): ContactInfo() -> 3 つの状態が明確になった上に Nullable を利用せずに済んでいる 余談2: 直和でしか表現できないデータ構造 34 / 37