จะว่าไปนี่เป็นบทความแรกเลยนะเนี่ยที่พูดถึง Kotlin โดยเฉพาะ ซึ่งเกิดมาจากการที่เจ้าของบล็อกได้ใช้ภาษา Kotlin ในการเขียนแอปแทนภาษา Java แล้วก็พบว่ามีหลายๆอย่างที่ยังไม่ค่อยมีข้อมูลซักเท่าไรนักว่าเรียกใช้คำสั่งยังไงดีเมื่อต้องมาใช้ในแอนดรอยด์ ซึ่งหนึ่งในนั้นก็คือ Parcelable นั่นเอง

นักพัฒนาแอนดรอยด์ทุกคนรู้จัก Parcelable อยู่แล้วเนอะ?

นักพัฒนาแอนดรอยด์ส่วนใหญ่รู้กันอยู่แล้วว่า Parcelable เป็นการทำให้ Model Class ใดๆก็ตามให้อยู่ในรูปของ “พัสดุ” ที่จะถูกส่งไปมาระหว่างคลาสต่างๆของแอนดรอยด์ตามที่ทีมพัฒนาได้ออกแบบไว้

สมมติว่าเจ้าของบล็อกมี Model Class ที่มีหน้าตาแบบนี้

import android.os.Parcel;
import android.os.Parcelable;

public class Profile implements Parcelable {
    String name;
    String job;
    int age;
    /* ... */
}

และเมื่ออยากจะทำให้มันเป็น Parcelable ก็เพิ่มโค้ดเข้าไปแบบนี้

import android.os.Parcel;
import android.os.Parcelable;

public class Profile implements Parcelable {
    String name;
    String job;
    int age;

    public Profile() {
    }

    /* ... */

    protected Profile(Parcel in) {
        name = in.readString();
        job = in.readString();
        age = in.readInt();
    }

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel parcel, int i) {
        parcel.writeString(name);
        parcel.writeString(job);
        parcel.writeInt(age);
    }

    public static final Creator<Profile> CREATOR = new Creator<Profile>() {
        @Override
        public Profile createFromParcel(Parcel in) {
            return new Profile(in);
        }

        @Override
        public Profile[] newArray(int size) {
            return new Profile[size];
        }
    };
}

แต่ถ้าเป็น Kotlin จะต้องเขียนยังไงล่ะ?

จากการที่ Kotlin เป็น First Class Citizen สำหรับแอนดรอยด์ จึงทำให้มีการเพิ่มสิ่งที่เรียกว่า Parcelize เพื่ออำนวยความสะดวกให้กับนักพัฒนาแอนดรอยด์ที่ใช้ Kotlin (ชีวิตดี) โดยจะต้องเปิดใช้งานผ่าน Plugin ใน build.gradle ก่อน

apply plugin: 'kotlin-parcelize'

// Alternative
plugins {
    /* ... */
    id 'kotlin-parcelize'
}

จากนั้นก็ให้เรียกใช้งาน Parcelize ในรูปแบบของ Annotation ที่ชื่อว่า @Parcelize

สิ่งที่นักพัฒนาต้องทำก็คือ สร้าง Data Class ขึ้นมาตามปกติ แล้วทำให้เป็น Parcelable ด้วยการใส่ @Parcelize ไว้ข้างบนคลาสได้เลย

@Parcelize
data class Account(var address: String, var zipCode: Int) : Parcelable

ชีวิตดีโคตรๆอ่ะ

สรุป

จะเห็นว่า Kotlin นั้นช่วยอำนวยความสะดวกให้นักพัฒนาหลายๆอย่าง และยังเป็น First Class Citizen ในแอนดรอยด์ด้วย จึงมั่นใจได้ว่าการใช้ Kotlin ในการพัฒนาแอปแอนดรอยด์จะทำงานได้อย่างเต็มที่ รวมไปถึงความสามารถเพิ่มเติมอื่นๆที่ทีม Kotlin และ Google ร่วมมือช่วยกันสร้างขึ้นมาเพื่ออำนวยความสะดวกให้กับนักพัฒนา เพื่อที่จะได้โฟกัสกับอย่างอื่นที่ทำให้แอปที่ดีขึ้น ตอบโจทย์ผู้ใช้งานได้มากขึ้นแทน