[kotlin] 코틀린 sealed 클래스의 동반 객체 사용 방법

코틀린에서 sealed 클래스를 사용하면 특정 타입의 하위 클래스가 제한됩니다. 이것은 패턴 매칭이나 when 식에서 매우 유용합니다. 동반 객체를 사용하여 sealed 클래스의 하위 클래스를 만들고 확장하기도 쉽습니다.

sealed 클래스와 동반 객체 생성

sealed class Result {
    data class Success(val data: String) : Result()
    data class Error(val message: String) : Result()
    
    companion object {
        fun createSuccess(data: String): Result {
            return Success(data)
        }

        fun createError(message: String): Result {
            return Error(message)
        }
    }
}

위의 코드에서 sealed class Result는 두 개의 하위 클래스인 SuccessError를 가지고 있습니다. 또한 동반 객체를 사용하여 Success 또는 Error 객체를 생성할 때 유용한 함수를 정의했습니다.

sealed 클래스의 확장

fun Result.getResultMessage(): String {
    return when (this) {
        is Result.Success -> "Success: ${this.data}"
        is Result.Error -> "Error: ${this.message}"
    }
}

sealed 클래스는 다양한 확장 함수를 지원하므로 코드의 가독성 및 유지보수성이 높아집니다.

sealed 클래스와 동반 객체의 사용 방법에 대한 간단한 예제를 확인할 수 있습니다.

결론

코틀린의 sealed 클래스와 동반 객체는 다양한 타입의 상태나 결과를 나타내는데 유용하며, 특히 패턴매칭이나 다형성을 사용할 때 매우 효과적입니다.

이러한 방식으로 코드를 작성하면 유연하고 읽기 쉬운 코드를 작성하는 데 도움이 됩니다.

자세한 내용은 코틀린 공식 문서를 참조하십시오.