Enum은 클래스 내에 상수들을 열거해 관리하는 문법으로, 각 상수들은 객체처럼 property와 function을 가질 수 있는 특징이 있습니다. Stable replacement of the enum class values functionEnum 클래스의 열거된 상수들을 연속적으로 접근하고 싶을 때 values 함수를 자주 사용했었는데요. 그러다 최근 Kotlin 1.9.0 버전으로 업그레이드를 하니 values 대신 entries 속성을 사용하길 권장합니다. Enum의 entries는 kotlin 1.8.20에서 Beta 기능으로 처음 등장했고 kotlin 1.9.0 버전에서 정식으로 Stable 되었습니다. entries 속성도 values와 동일하게 열거된 상수들을 연속적으로 접근할 수 있습니다..
Kotlin 1.9.0 버전으로 올리면 Selad Class 자식으로 object 대신 data object를 사용하라고 권장합니다. 기존 object와 차이점은 무엇일까요? 어떤 장점이 있는 걸까요? 밑줄까지 치면서 권장하면서 말이에요 Stable data objects for symmetry with data classes https://kotlinlang.org/docs/whatsnew19.html#support-for-secondary-constructors-with-bodies-in-inline-value- classes What's new in Kotlin 1.9.0 | Kotlin kotlinlang.org data object는 1.9.0 버전부터 정식 출시(Stable)된 데이터 홀더 객..
안녕하세요 점냥입니다:) Compose의 Text 함수는 텍스트 UI를 구현하는 함수입니다. Compose는 여러 속성을 지정하기 위해 Modifier 객체를 제공해주고 있는데 android:gravity로 지정했던 텍스트 내부 정렬 기능이 없더라고요. 공식문서에도 관련 내용이 없어서 찾아보며 공부한 내용을 정리했습니다. 구현하고자 하는 레이아웃 이번 포스팅에서 구현할 레이아웃은 사진처럼 Text가 양 끝에 정렬된 레이아웃입니다. 기본적으로 제공해주는 Compose 레이아웃 중 순서대로 가로로 정렬되는 Row 레이아웃을 사용하겠습니다. Compose용으로 ConstraintLayout 라이브러리를 제공해주지만 아직 알파버전이기 때문에 제외했습니다. Row 레이아웃 정렬하는 방법 Row 레이아웃의 속성 중..
안녕하세요 점냥입니다:) Kotlin으로 Android 프로젝트를 진행하면서 발생한 문제가 있고 해결 방법에 대해 말씀드리려고 합니다. 문제 상황 당시 Coroutine + Room 작동이 올바른지 테스트를 하려고 했고, Dao에 정의된 모든 함수들은 suspend로 정의되어 있기 때문에 코루틴 스코프가 필요했습니다. @Test @Throws(Exception::class) fun writeHistoryAndReadInList() = runBlockingTest { val history = History(searchWord = "test") historyDao.insertHistory(history) val findHistory = historyDao.findHistoryByWord("test") ass..
이제까지 색상별로 Drawable를 생성했었는 데 너무 비효율적이더라구요 코드상으로 color를 변경할 수 있습니다. 코드로 Drawable 속성 변경하기 val drawable : Drawable = imageview.drawable val color = ContextCompat.getColor(mContext,R.color.colorToSet) if (drawable is ShapeDrawable) { drawable.paint.color = color } else if (drawable is GradientDrawable) { drawable.setColor(color) }
java와는 다르게 kotlin에서 singleton은 아주 간편하게 구현할 수 있다. java의 Singleton Object 기본 사용 object A var a : A = A kotlin의 object 키워드는 Singleton을 보장해준다. 한 줄이여서 너무 간편하다.. 하지만 object는 생성자를 지원하지 않기 때문에 만약 Singleton을 생성할 때 매개변수가 필요하다면 사용할 수 없다. companion object로 구현 class A { companion object { @Volatile private var instance: Singleton? = null @JvmStatic fun getInstance(context : Context): A = instance ?: synchron..
2017년 Google I/O 에서 Kotlin을 Android 공식 개발 언어로 지정했습니다. 벌써 꽤 시간이 지났네요. 부끄럽지만 Kotlin의 구체적인 장점이 떠오르지 않고 Java와 비교해서 개발이 훨씬 편해졌다고만 느끼고 있더라고요. 이번 글을 쓰면서 kotlin을 왜 쓰게 되었는지. Kotlin의 장점은 무엇인지 다시 한번 생각해 보는 시간이 되었습니다Kotlin의 장점Kotlin의 장점은 간단히 정리하면 (자바와 비교해서) 간결한 문법과 편리한 기능입니다. 많은 글들에서 Kotlin의 장점을 Java와 비교해서 설명하고 있습니다. Android 개발자부터 시작해서 최근에는 Kotlin+Spring이 서버 개발자 사이에서 인정받기 시작했습니다. 그래서 Java와 Kotlin으로 넘어온 비중이 ..