코틀린

    Kotlin 코틀린의 Sealed Class

    Kotlin 코틀린의 Sealed Class

    Kotlin sealed class 란? 코틀린에서 sealed class는 다른 클래스가 상속을 받지 못하도록 제한하는 클래스이다. 이 클래스는 클래스 계층 구조에서 제한된 개수의 클래스를 나타낼때 사용하게 된다. sealed class Result { data class Success(val data: T) : Result() data class Error(val exception: Exception) : Result() } sealed class의 특징을 정리하면 다음과 같다. sealed class의 특징 1. 상속을 제한한다. sealed class는 다른 클래스에서 상속을 받지 못하도록 제한합니다. 그렇기 떄문에 sealed class의 하위 클래스는 sealed class의 내부에서 정의되어..

    Kotlin 코틀린의 Flow

    Kotlin 코틀린의 Flow

    최근 회사에서 안드로이드 개발을 하면서 Flow와 stateflow를 많이 사용하면서 개발을 진행하고있다. 오늘은 Flow와 Stateflow에 대해서 내가 알고있는것을 자세히 정리하려고한다. 기존에는 코틀린의 LiveData, RxJava, coroutine과 flow, stateflow 사용하기 전까지는 콜백과 리스너를 통해 이벤트 발생 시 특정 동작을 수행하는 역할을 개발해왔다 하지만 리스너를 사용하게 되면 코드가 복잡해지고 가독성이 떨어지며 메모리 누수와 같은 문제가 발생할 수 있었다 이후 LiveData , RxJava와 같은 반응형 프로그래밍 라이브러리들이 나오게 되었고 더 나아가 코루틴과 Flow가 나오게 되면서 이러한 문제들을 해결할 수 있었다. 최근 나같은 경우는 데이터의 변화에 따른 ..

    Kotlin 코틀린의 Coroutine

    Kotlin 코틀린의 Coroutine

    * Coroutine의 개념 코루틴은 1958년 멜빈 콘웨이가 처음 제창했다고 하는 개념으로 현재 여러 프로그래밍 언어에 구현되어 있으며 코틀리만의 고유한 개념은 아니다. 프로그래밍에서 루틴이란 프로그램의 흐름을 추상적으로 일컫는 말이다. 루틴은 크게 메인루틴과 서브루틴으로 나눌수있는데, 예를들어 main함수에 의해 수행되는 프로그램의 흐름을 메인루틴이라고 한다면, main함수 안에서 실행되는 개별 함수들에 의해 수행되는 흐름을 서브루틴이라 비유할 수 있다. 루틴의 한 종류인 함수는 호출을 함으로써 그 내부에 진입하여 내부에서 처리를 수행하고, 처리가 끝나면 함수도 종료되는 구조를 가지고 있기 때문에 보통은 루틴이 일직선적인 흐름을 가지고 있다고 할 수 있다. 그런데 코루틴의 특징은 이 일직선적인 흐름을..

    Kotlin 코틀린의 object VS companion object

    Kotlin 코틀린의 object VS companion object

    object VS companion object 코틀린은 싱글톤 클래스를 생성하기 위해 object declaration이라는 것을 사용한다. 싱글톤 클래스로 선언해야 할 경우에 클래스 명 앞에 class 대신 object를 사용함으로써 싱글톤 클래스를 생성하게 된다. 하지만 공부를 하다보면 companio object라는 것을 볼 수 있다. object와 companion object는 무엇이 다른지 알아보자. 1. object object는 크게 2가지로 사용된다. 1. object expression (객체 표현식) 2. object declaration (객체 선언) - 동반 객체(객체 선언을 클래스 내부에 사용한 것) 여기서 싱글톤 클래스를 생성하기 위해 사용되는 object의 쓰임은 2번째인 ..

    Kotlin 코틀린의 Context

    Kotlin 코틀린의 Context

    Context 우선 공식문서에 따른 Context의 정의는 이렇게 정의되어있다. 영어로 정의되어있는 내용을 한국어로 해석하여 이해할때 여러 어려움이 존재한다. 그에 따라 지금부터 Context의 대한 내용을 조금더 찾아보며 정리하겠다. Context 란? Context 는 뜻 그대로 해석한다면 애플리케이션 현재 상태의 맥락(Context)를 뜻한다. 새롭게 생성된 객체가 지금 무슨일이 일어나고 잇는지를 알 수 있도록 한다. 그에 따라 애플리케이션과 액티비티에 대한 정보를 얻기 위해서는 Context를 사용하면 된다. Context는 크게 두가지의 역할을 하고 있는 추상 클래이이다. 앱에 관하여 시스템이 관리하고 있는 정보에 접근한다. (resource , class , 애플리케이션 환경 정보) 안드로이드..