Apple is Apple
더블 콜론 참조(::)
Language/Kotlin 2024. 5. 9. 21:23

안드로이드나 코틀린으로 개발하다보면 더블콜론 (::) 을 자주 접하게 된다. 더블콜론은 무엇을 의미할까 보통 더블콜론은 리플렉션을 위해 사용한다. 그럼 리플렉션이란 무엇인가? 간단하게 알아보고 넘어가보자 리플렉션은 실행 중에 프로그램의 구조를 검사하고 수정할 수 있는 기능을 말한다. 이는 객체나 클래스의 속성, 메소드 등의 정보를 런타임에 동적으로 조작할 수 있게 해준다. ( 런타임상 컴파일된 바이트코드에서 작성한 코드가 어느 곳에 위치하는지 모르기에 바이트코드를 이용해 참조하려는 값을 찾기위해 사용) 사용법은 다음과 같다. JAVAAClass.classKotlinAClass::class 하지만 우리가 안드로이드 프로그래밍을 할 땐 AClass::class.java// exIntent(this, Some..

URL Encoding
Language/Kotlin 2024. 4. 2. 15:04

안드로이드 서버 통신을 하다 보면 가끔 "%EC%AD~~" 이런 식으로 응답이 오는 경우가 있다. 보통 응답 값이 특수문자 이거나 한글일때 발생한다. URL Encoding이란 URL에서 URL로 사용할 수 없는 문자나 URL로 사용할 수 있지만 의미가 왜곡 될 수 있는 문자들을 "%XX" 형태로 변환한다 (여기서 XX는 16진수) 코틀린에서 URL Encoding을 하는 방법을 알아보자. 자바 표준 라이브러리의 URLEncoder / URLDecoder를 통해 쉽게 인코딩, 디코딩을 할 수 있다. // 클래스 호출 import java.net.URLEncoder import java.net.URLDecoder // 함수 자체 호출 import java.net.URLEncoder.encode import..

article thumbnail
[Kotlin] Coroutine
Language/Kotlin 2024. 3. 7. 22:07

코루틴 소개 코루틴이란 코틀린, 안드로이드에서 간단하게 비동기적으로 코드를 실행 할 수 있는 동시성 디자인패턴이다 (구글 문서 발췌) 비동기 프로그래밍이란? 여러 작업을 동시에 수행할 수 있도록 하는 프로그래밍 패러다임 Non blocking 방식으로 수행하며 CPU리소스를 효율적으로 사용 전통적으로는 쓰레드 기반 작업으로 진행되었음 (쓰레드 -> 코루틴) synchronous - 작업을 순서대로 수행 asynchronous - 순서와 무관하게 작업을 수행 Blocking - Caller가 Callee를 호출 하면서 작업을 멈추고 대기함 Non-Blocking Non Blocking - Caller는 Callee를 호출하고 대기하지 않음. 바로 다음 작업을 수행 Asynchronous with non b..

Sealed Class
Language/Kotlin 2023. 9. 15. 16:44

Sealed Class (& enum class) 등장 배경 여러 자식 클래스들이 하나의 부모 클래스를 상속받았다고 할 때, 컴파일러는 어떤 클래스들이 부모 클래스를 상속받았는지 알지 못한다. 그래서 이 문제를 해결하기 위해 sealed class라는 개념이 나왔는데 sealed class는 자신은 추상클래스이고, 자신을 상속받는 자식 클래스의 종류를 제한하는 특성을 가지고 있다. 컴파일 시 sealed class의 자식이 어떤 것이 있는지 알 수 있다는 것이다. 자식 클래스의 종류를 제한하기 때문에 다음과 같은 특성이 있다. 실드란 '봉인된'이라는 의미로 무언가 안전하게 보관하기 위해 묶어 두는 것 실드 클래스 그 자체로는 추상 클래스와 같기 때문에 객체를 만들 수는 없다. 생성자도 기본적으로는 pri..

[Kotlin] Scope function
Language/Kotlin 2023. 7. 31. 17:12

Scope function Kotlin에서 제공하는 Scope function이다. 주로 객체와 함께 사용되며 편리하고 간결한 코드 작성을 도와준다. 간결한 코드 작성을 위해 필수적으로 알아두면 좋은 챕터라고 생각한다. 이름에서 알 수 있듯이 이 함수를 호출하면 Scope가 생기게 되고 이 Scope안에서는 전달된 객체가 "it" 또는 "this"라는 이름의 Context Object로 사용할 수 있게 된다. Scope function은 총 5가지가 있는데 함수마다 Context Object(전달된 객체)를 참조하는 방법과 리턴 값(Context Object or lambda)이 상이하다. 1. let let은 null이 아닌 값만 실행시키고 싶을 때 주로 사용된다. 그래서 let은?. 연산자와 같이 사..