Cute Apple
본문 바로가기
개발/Kotlin

[Kotlin] Serializable vs Parcelable

by 미댕댕 2022. 9. 7.

프로젝트를 진행하는데 문득 내가 Serializable 은 많이 사용했지만 Parcelable 은 사용해보지 않았다는 것을 깨달았다

그래서 차이점을 공부해보려고 포스팅을 해본다!

 

이 두가지는 직렬화/역직렬화, 마샬링/언마샬링 이라고도 불린다

 

Serializable

  • Java의 표준 인터페이스
  • 구현이 간편
  • Parcelable보다 속도가 느림
    • 리플랙션이라는 기술을 사용기 때문
    • 리플렉션이란 런타임에 프로그램의 클래스를 조사하기 위해서 사용되는 기술.
    • 즉, 프로그램이 실행중일 때 인스턴스 등을 통해 객체의 내부 구조 등을 파악
data class Person(
    var age: Int,
    var name: String,
    val birthday: String
) : Serializable

 

 

Parcelable

  • Java가 아닌 Android SDK의 인터페이스
  • Serializable보다 빠르고 Android에서 사용하기를 권장
  • reflection을 사용하지 않고 직렬화/역직렬화를 하는 과정을 개발자가 모두 구현
    • 현재는 코틀린에서 Annotation 제공하여 구현하기 쉽게 변경되었다..!

 

//build.gradle

plugins {
    id "kotlin-parcelize"
}
@Parcelize
data class Person(
    var age: Int,
    var name: String,
    val birthday: String
) : Parcelable

 

@Parcelize가 지원하는 타입

  • 원시타입 그리고 원시타입의 박스타입 지원
  • Object와 enum 지원
  • String, CharSequence 지원
  • Exception 지원
  • Size, SizeF, Bundle, IBinder, IInterface, FileDescriptor 지원
  • SparseArray, SparseIntArray, SparseLongArray, SparseBooleanArray 지원 
  • 모든 Serializable(Date 포함) 그리고 Parcelable 구현체들 지원
  • 모든 타입의 Collection 지원
    List는 ArrayList로 매핑, Set은 LinkedHashSet으로 매핑, Map은 LinkedHashMap으로 매핑
  • 모든 타입의 배열 지원
  • 지원하는 모든 타입의 Nullable 버전 지원

 

 

 

 

참고

https://simsi6.tistory.com/69

https://www.charlezz.com/?p=44613

https://developer.android.com/kotlin/parcelize?hl=ko

 

Parcelable 구현 생성기  |  Android 개발자  |  Android Developers

Parcelable 구현 생성기 kotlin-parcelize 플러그인은 Parcelable 구현 생성기를 제공합니다. Parcelable 지원을 포함하려면 앱의 build.gradle 파일에 다음 Gradle 플러그인을 추가합니다. Groovy plugins { id 'kotlin-parce

developer.android.com

 

 

엥? Parcelize 열심히 써봐야겠네...? Serializable 안녕~~🖐

반응형

'개발 > Kotlin' 카테고리의 다른 글

[Kotlin] Data class 와 copy()  (0) 2022.08.03
[Kotlin] lateinit vs by lazy  (0) 2022.07.30
[Kotlin] Scope Function  (0) 2022.07.27
[Kotlin] 코틀린이란?  (0) 2022.07.25

댓글