본문 바로가기

Programming Language26

[Kotlin] Sealed class & Sealed interface 가이드 Kotlin sealed class 소개Kotlin에서 sealed class는 제한된 클래스 계층 구조를 정의할 때 사용하는 강력한 도구입니다. 쉽게 말해, 부모 클래스를 상속받는 자식 클래스의 종류를 컴파일러가 모두 알고 있게 만드는 기능입니다.결론적으로 이러한 특성 덕분에 개발자의 실수를 줄여주고, 코드의 안정성을 높여줍니다. 사용하는 이유Enum class의 한계enum class는 상수 집합을 정의하는 데 유용하지만, 각 상수가 하나의 인스턴스만 가질 수 있다는 단점이 있습니다. 서로 다른 상태 값을 가진 객체를 개별적으로 생성할 수 없습니다.// UI의 상태를 표현하려고 함 (로딩 중, 성공, 실패)enum class UiState(val data: String?, val error: Exce.. 2025. 12. 15.
[Kotlin] Abstract class (클래스를 위한 미완성 설계도) 소개Kotlin에서 abstract class는 말 그대로 추상적인(미완성된) 클래스를 의미합니다. 스스로는 객체(인스턴스)를 만들 수 없으며, 오직 다른 클래스가 이를 상속받아 완성시킬 때만 의미를 가집니다. 마치, 건물을 짓기 위한 청사진(Blueprint)이나 템플릿과 같은 역할을 합니다. 특징인스턴스화 불가: abstract class는 미완성 상태이므로 직접 객체를 생성할 수 없습니다.멤버의 구성:추상 멤버 (Abstract Member): 구현부 없이 선언만 된 멤버. 상속받는 자식 클래스가 반드시 구현해야 합니다. (open 키워드 불필요)구현된 멤버 (Concrete Member): 이미 로직이 구현된 멤버. 자식 클래스가 그대로 쓰거나 필요시 오버라이드 할 수 있습니다.상태(State) .. 2025. 12. 15.
[Kotlin] Coroutine 기본 개념 딥 다이브 Android & Main Thread안드로이드의 View는 메인 스레드에서 업데이트가 된다. 그 이유는 서로 다른 스레드에서 View를 동시에 업데이트하면 문제가 발생할 수 있기 때문이다.안드로이드는 프레임 렌더링을 위해서 60fps(1초에 60 프레임 렌더링), 16ms(하나의 프레임을 렌더링 하는 데 걸리는 시간)에 달성해야 한다고 한다. 이 이하로 떨어지게 되면 시각적으로 봤을 때, 버벅거림이 발생하고 사용자에게 안 좋은 경험을 제공할 수 있기 때문이다. 스레드는 한 번에 하나의 일을 처리할 수 있다. 메인 스레드는 View 업데이트에 사용되어야 한다. 만약 View 업데이트가 아닌 다른 작업이 많아지거나 오래 걸린다면 메인스레드가 View 업데이트를 하지 못하게 된다. 결과적으로 View 업데.. 2025. 5. 29.
[Kotlin] Coroutine Dispatchers, Job and Deferred 개념 딥 다이브 소개DispatchersAndroid DispatchersDispatchers.DefaultDispatchers.IODispatchers.IO & Dispatchers.DefaultJobDeferredJob States소개CoroutineContext는 코루틴 실행을 어떻게 할 것인지에 대한 요소들을 결정한다. Coroutine은 항상 Kotlin 표준 라이브러리에 정의된 CoroutineContext 타입의 값으로 표시되는 일부 Context에서 실행된다. CoroutineContext는 다양한 요소의 집합이다. 주요 요소는 Job, Dispathcer, ExceptionHandler 등이 있다. 이러한 요소들은 각각의 키 값을 갖고 있으며, CoroutineContext로 등록된다./* * Copyr.. 2023. 7. 1.
[Kotlin] CoroutineContext, suspend keyword 개념 딥 다이브 소개CoroutineScopeCoroutineContextCoroutineBuildersuspend keyword예제Structured concurrencyCoroutine continuation소개코루틴은 일시 중단이 가능한 계산의 인스턴스이다. 안드로이드의 UI 스레드 실행을 중단시키지 않고 다른 스레드에서 계산을 실행할 수 있다는 점에서 개념적으로 스레드와 유사하다. 그러나 코루틴은 특정 스레드에 바인딩되지 않고, 한 스레드에서 실행을 일시 중단하고 다른 스레드에서 다시 시작할 수 있다. 말이 어려울 수 있다. 중요한 점은 코루틴은 일시 중단이 가능하다는 것이다. Coroutine을 구성하는 요소로 CoroutineScope, CoroutineContext, CoroutineBuilder 등이 있다.. 2023. 7. 1.
[Kotlin] Compare two formatted Date Strings 목차 Import Library 날짜 데이터 생성 날짜 비교 예제 결과 결론 Import Library import java.text.SimpleDateFormat import java.time.Duration import java.time.LocalDateTime import java.util.* 날짜 데이터 생성 // 현재 시간 가져오기 val format = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS", Locale.getDefault()) val date = try { val millis = Calendar.getInstance(TimeZone.getTimeZone("UTC")).timeInMillis format.format(Date(millis)) } cat.. 2023. 6. 3.
[Kotlin] Interface 가이드 Kotlin interface코틀린에서 인터페이스는 클래스 구조의 설계도 역할을 하며, 추상 멤버(Abstract members)와 구현된 멤버(Implementations)를 모두 포함할 수 있는 강력한 기능을 제공합니다. 자바 8 이후의 인터페이스와 유사하지만, 코틀린만의 고유한 특징들도 가지고 있습니다. 기본 정의 및 특징코틀린 인터페이스는 interface 키워드를 사용하여 정의합니다. 가장 큰 특징은 메서드에 기본 구현을 포함할 수 있다는 점입니다.interface MyInterface { fun bar() // 추상 메서드 (구현 없음) fun foo() { // 본문(body)이 있는 메서드 (선택적 구현) println("Default Implementa.. 2023. 2. 12.
[Koltin] Object Keyword 개요object 키워드는 다양한 상황에서 사용되는데, 별도의 생성자 호출 없이 단 하나의 인스턴스만 생성할 수 있고, 이 인스턴스를 통해 멤버에 접근할 수 있다.Object declaration (객체 선언) : 싱글톤 객체 생성Object expression (객체 표현식) : 익명 클래스 객체 생성Companion object : 클래스 안에 싱글톤 객체 생성Data object : 디버깅이 용이한 objectObject declaration 싱글톤 패턴을 구현하는 방법.단 하나의 인스턴스를 생성하며, 프로그램 전체에서 이 인스턴스를 공유한다.object MySingleton { fun doSomething() { println("Singleton 객체의 함수 호출") }}fu.. 2023. 2. 8.
[Kotlin] forEach에서 break & continue 1. continuereturn@forEach를 하면 break가 될 것 같지만 continue로 동작한다.이름을 짓는 방법도 있다. 마찬가지로 continue로써 동작한다. 2. breakrun 함수로 감싼 후 return@run 으로 run에서 나온다면 break로써 동작한다.continue와 마찬가지로 이름을 지어줄 수 있다. 2022. 12. 5.
반응형