[Android] Parcelable: Java와 Kotlin 구현 차이
Parcelable을 상속받아 클래스 생성할 경우 CREATOR의 정의
Parcelable protocol requires a Parcelable.Creator object called CREATOR
1 | public static final Creator<DataClass> CREATOR = new Creator<DataClass>() { |
이걸 코틀린 코드로 변환하면 다음과 같이 만들 수 있으나-
1 | // 프로젝트에 자바 클래스도 존재하는 경우 JvmField 어노테이션 누락에 주의할 것 |
[코틀린] Parcelable 구현
-그러나 코틀린에서는 Parcelable 구현을 위해 @Parcelize
어노테이션을 제공하고 있기 때문에 꼭 필요한 경우가 아니면 자바와 같이 CREATOR를 만들 필요는 없다.
코틀린에서 구현한 Parcelable을 상속받은 Data Class는 다음과 같다. 이 코드는 이 자체만으로도 내부에서 CREATOR 기능을 수행한다.
1 | import android.os.Parcelable |
참고를 위해 Parcelize 어노테이션에 작성된 주석의 일부를 가져왔다.
Instructs the Kotlin compiler to generate
writeToParcel()
,describeContents()
[android.os.Parcelable] methods, as well as aCREATOR
factory class automatically.
이는 자바 코드(또는 코틀린 코드) 상에서 putExtra
를 통해 전달할 수 있다.
1 | ParcelData p = new ParcelData(); |
그리고 intent를 통해 이동한 액티비티에서는 getParcelableExtra
로 데이터를 받아올 수 있다.