Kotlin

Java에서 안전한 타입 변환을 위해 선택했던 방법 서버와의 HTTP 통신을 통해 응답을 받아오기 위해 다음과 같은 Response 인터페이스를 상속하는 간단한 클래스 Success와 Fail을 만들었다고 해보자. sealed interface Response data class Success(val responseBody: String) : Response data class Fail(val errorMessage: String) : Response 기존 자바에서는 안전하게 타입을 변환하기 위해 타입을 변환하기 전에 instanceof 함수를 통해 타입을 체크한 후 다시 타입 변환을 해서 메서드를 호출해야 했다. public class ResponseMain { public static void mai..
이번 글에서 다룰 내용 Kotlin에서 코드를 보다 보면, 어떤 코드는 예외 발생 상황에서 Exception을 던지고 어떤 코드는 Error을 던진다. 이번 글에서는 이 둘의 차이에 대해서 다뤄보고자 한다. Kotlin의 Exception과 Error의 차이 Kotlin에서의 예외 처리는 기본적으로 Java 기반의 예외 처리 체계를 따른다. @SinceKotlin("1.1") public actual typealias Error = java.lang.Error @SinceKotlin("1.1") public actual typealias Exception = java.lang.Exception 따라서 이 둘의 차이를 이해하기 위해서는 해당 Java 소스를 확인할 필요가 있다. 소스를 확인하면서 둘의 차이..
오류 메세지와 원인 분석 안드로이드 API33부터 onBackPressed 함수가 Deprecated 되면서 함수를 override하면 다음과 같은 경고 메세지가 뜨고 있다. 'onBackPressed(): Unit' is deprecated. Overrides deprecated member in 'androidx.core.app.ComponentActivity 직역하면 다음과 같은 뜻이다. 'onBackPressed(): Unit'은 더 이상 사용되지 않습니다. 'androidx.core.app.ComponentActivity'에서 더 이상 사용되지 않는 메서드를 재정의합니다. 당분간은 메세지가 뜬 상태로 있겠지만, 향후 몇 버전 뒤에는 코드가 없어질 것이므로, 이 글에서는 onBackPressed를..
· KMP
expect class와 expect fun KMM이 나오면서 코틀린을 사용해 안드로이드, iOS 모두의 비즈니스 로직을 구현하기 위해 Kotlin에 class와 fun에 붙일 수 있는 expect modifier가 나오게 됐다. expect modifier은 abstract modifier와 비슷하게 동작하지만, 의도가 다르다. abstract class는 자신을 상속하는 클래스가 추상체로 포함된 함수나 변수 등을 구현하도록 만들지만, expect class는 KMM에서의 공통 모듈에서 선언된 선언체가 Android, iOS 각각에서 구현되도록 강제하기 위해 만들어졌다. expect class 사용해보기 예를 들어 다음과 같은 commonMain 모듈에 다음과 같이 VersionGetter 클래스를 e..
· KMP
안드로이드 스튜디오에서 KMM(Kotlin Multiplatform Mobile) 앱을 개발하기 위해서는 KMM 개발용 플러그인을 설치해야 한다. 이번 글에서는 KMM 용 플러그인을 설치하는 방법과, 해당 플러그인을 사용해 프로젝트를 만드는 방법까지를 학습해볼 것이다. KMP 플러그인 설치하기 1. 안드로이드 스튜디오를 켜면 다음과 같은 화면이 나온다. 2. 이 화면에서 왼쪽에 Plugin을 누르고, Kotlin Multiplatform을 검색하면, Kotlin Multiplatform Mobile 플러그인이 나온다. 이걸 Install을 누른다. 3. 설치가 완료되면, 안드로이드 스튜디오를 재시작하라는 팝업이 나오고, 재시작(Restart) 버튼을 누르면, 플러그인의 설치가 완료된다. 여기까지 KMM ..
Dev.Cho
'Kotlin' 태그의 글 목록 (8 Page)