จะว่าไปนี่เป็นบทความแรกเลยนะเนี่ยที่พูดถึง 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 ร่วมมือช่วยกันสร้างขึ้นมาเพื่ออำนวยความสะดวกให้กับนักพัฒนา เพื่อที่จะได้โฟกัสกับอย่างอื่นที่ทำให้แอปที่ดีขึ้น ตอบโจทย์ผู้ใช้งานได้มากขึ้นแทน