5 Hal Tentang Kotlin Yang Wajib Kamu Ketahui

Saat ini di kalangan developer android sedang hangat — hangatnya membicarakan tentan bahasa pemrogramman baru yang baru saja di umumkan google menjadi salah satu official support bahasa pemrogramman untuk mengembangkan aplikasi android. Bahasa pemrogramman itu adalah Kotlin yang mungkin teman — teman disini sudah pada mengetahui nya. Disini saya akan share dengan teman — teman yang mungkin masih bingung atau ingin mengetahui dan mulai menggunakan kotlin.

Sebagai awalan untuk memulai menggunakan kotlin untuk mengembangkan aplikasi android yang akan kita develop kita perlu memahami 5 hal dari kotlin. Apa aja itu berikut ini Pembahasanya.

1. Data classes

Dalam membuat program atau aplikasi pasyi kita tidak mungkin tidak berurusan dengan data, pada pemgrogramman java kita mengenal istilah POJO ( Plai Old Java Object ) sebagai sebuah class yang akan kita gunakan sebagai model dari data yang akan kita olah. Berikut ini adalah contoh dari POJO yang biasa kita tulis dengan Java.

public class User{
private String name;
private int age;
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
public void setAge(int age){
this.age = age;
}
public int getAge(){
return age;
}
}

Nah dalam bahasa pemrogramman kotlin juga menyediakan fitur untuk mempermudah kita ketika akan membuat class yang akan kita gunakan untuk model dari sebuah data dan di kotlin disebut dengan Data Class yang di tandai dengan code data berikut ini contoh nya :

data class User(val name: String, val age: Int)

Class di atas itu sudah termasuk fungsi setter dan getter, jadi gimana mudah bukan? Dan data class di kotlin juga memiliki beberapa hal yang akan memudahkan kita sebagai developer untuk mengolah data class ini.

Copying

Menduplikasi sebuah data biasanya sering kita lakukan untuk beberapa object yang dimana kita tidak ingin mengubah nilai dari sebuah object sebelumnya. Untuk itu kita bisa melakukanya seperti dibawah ini :

fun copy(name: String = this.name, age: Int = this.age) = User(name, age)

Jadi kita bisa membuat fungsi untuk menyalin sebuah object menjadi bentuk object baru dan kita bisa mengubah beberapa nilai dari property dari object yang akan kita salin. Berikut ini contoh penggunaanya.

val ocit = User(name = “Rosid”, age = 23) 
val anakOcit = ocit.copy(age = 2)

Data Classes and Destructuring Declarations

Terkadang akan lebih nyaman jika kita menyatukan 2 variable atau lebih kedalam satu variable. Kalau di java biasanya kita buat sebuah class untuk membuat atau menyatukan dua variable atau lebih tadi. Atau juga di java biasanya kita mengguanakan HasMap dan yang lainya. Akan tetapi pada kotlin kita bisa menggunakan yang namanya Destructuring Declarations seperti ini contoh nya.

Berikut ini adalah contoh jika kita mengoperasikan pengolahan variable dengan cara tradisional :

val ocit = User("Rosid", 23)
printf("$ocit.name, Berumur $ocit.age tahun")
// Hasilnya "Rosid, Berumur 23 tahun"

Akan tetapi jika kita menggunakan Destructuring declarations maka akan lebih simple seperti berikut ini :

val ocit = User("Rosid", 23)  
val (name, age) = ocit
println("$name, Berumur $age tahun") 
// Hasilnya "Rosid, Berumur 23 tahun"

2. Object declarations

Pada java untuk beberapa kasus untuk membuat data hanya bisa di inisiasi menjadi satu object saja, biasanya kita menggunakan sebuah Pattern yang biasa disebut dengan Singgleton. Salah satu yang mungkin biasa kita gunakan adalah penggunaan sebuah method pada satu class yang kita bisa akses secara langsung tanpa kita perlu membuat instance dari sebuah class yang berisi method tersebut. Berikut ini adalah contoh nya :

public class DataProviderManager{
public static void registerDataProvider(DataProvider dataProvider){
// ....
}
public static List<DataProvider> getAllDataProvider(){
// ...
}
}

Untuk penggunaanya seperti berikut ini :

DataProviderManager.registerDataProvider(...)
List<DataProvider> dataProvider = DataProviderManager.getAllDataProvider()

Nah di kotlin kita bisa dengan mudah membuat sebuah object yang hanya memiliki satu inisiasi yang di sebut dengan object declarations berikut ini contohnya.

object DataProviderManager { 
fun registerDataProvider(provider: DataProvider) {
// set add dataProvider
}

val allDataProviders: Collection<DataProvider>
get() = // get all data provider
}

Untuk penggunaan nya kita bisa langsung akses ke function yang telah dibuat seperti contoh berikut ini :

DataProviderManager.registerDataProvider(…)
val allDataProviders = DataProviderManager.allDataProviders

Object ini juga bisa kita gunakan untuk mendeklarasikan anonymous inner class yang biasa di java kita gunakan ketika kita mengoverride method yang dari sebuah interaface.

Berikut contoh pada java :

new TextView(this).setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View view) {

}
});

Di kotlin kita bisa lakukan seperti ini :

TextView(this).setOnClickListener(object: View.OnClickListener{
override fun onClick(view: View?) {

}

})

3. Companion objects

Companion object ini masih berkaitan dengan sebuah pattern yang di sebut singgleton. Nah berikut ini adalah hal yang biasa kita lakukan pada java jika kita ingin membuat atau mengimplementasikan sebuah singgleton patter.

public class MyClass{
public static MyClass INSTANCE;
public static MyClass create(){
if(INSTANCE == null){
INSTANCE = new MyClass();
}
return INSTANCE;
}
}

Dan untuk penggunaan seperti berikut ini :

MyClass myClass = MyClass.create();

Pada bahasa pemogramman kotlin kita mengenal istilah companion untuk membuat sebuah object singgleton ini. Dan berikut ini cara pembuatan dan penggunaanya :

class MyClass { 
companion object Factory {
fun create(): MyClass = MyClass()
}
}

Untuk cara penggunaanya seperti berikut ini:

val instance = MyClass.create()

Kita juga bisa membuat companion lebih sederhana seperti berikut ini :

class MyClass { 
companion object {
}
}
val x = MyClass.Companion

Cara lain untuk membuat companion adalah kita bisa menggunakan interface seperti berikut ini :

interface Factory<T> {
fun create(): T
}
class MyClass {
companion object : Factory<MyClass>{
override fun create(): MyClass = MyClass()
    }
}
val myClass = MyClass.create()

4. String templates

Seperti yang kita ketahui pada basic pemrogramman base on JVM String bukanlah sebuah type data String adalah sebuah class yang memiliki keistimewaan yang bisa kita deklarasikan langsung nilainya.

Pada bahasa pemgrogramman kotlin kita akan di mudahkan jika berurusan dengan String, dan di kotlin di namai dengan String Templates. Nah berikut ini contoh penggunaan dari String templates :

Dengan String Template kita bisa pass sebuah variable kedalam object string hanya dengan menambahkan sebuah simbol $ yang mana itu tidak ada pada bahasa pemrogramman kotlin. Berikut ini jika kita lakukan di java dana kotlin.

Pada Java akan seperti ini :

int i = 10;
String s = "i = " + i; //nilainya "i = 10"

Dan pada kotlin jika kita menggunakan String Template akan seperti ini :

val i = 10 
val s = “i = $i” //nilainya “i = 10”

Atau kita juga bisa akses sebuah method melalui String Templates ini dengan menambahkan symbol ${…} berikut ini contoh penggunaanya :

val s = "abc" val 
str = "$s.length is ${s.length}" // evaluates to "abc.length is 3"

5. Interoperability with Java

Bagi kamu yang baru migrasi ke kotlin yang asalnya kamu mahir pada java maka itu akan sangat mudah sekali, karena pada dasarnya code yang di tulis pada Kotlin akan di eksekusi pada JVM (Java Virtual Machine) dimana JVM ini adalah core dasarnya Java. So kita bisa bilang cara berfikir kotlin dan java sama saja konsep dasarnya sama saja. Akan tetapi banyak pattern baru yang diterapkan di kotlin yang mana itu akan membuat kita sebagai programmer akan lebih mudah dalam menulis kode sehingga kita bisa menjadi lebih produktif di setiap hari — hari kita koding.

Nah pada pembahasan yang terakhir ini kita akan bahas bagaimana cara kita mengintegrasikan kotlin dan java. Mungkin disini teman — teman ada yang ingin migrasi ke kotlin tapi tidak mau mengubah semua code yang sudah pernah di tulis dengan java ke kotlin. Untuk itu berikut ini adalah pembahasan kita tentang bagaimana menghubungkan kotlin dan juga java pada project yang akan kita kerjakan.

Type Data

Karena di kotlin semua adalah object maka setiap type data di java di buat class pada kotlin. Berikut ini adalah daftar type data pada java dan kotlin.

Dan berikut untuk tradisional class pada java dan kotlin

Setter & Getter

Pada saat kita membuat model dengan java maka biasanya kita tidak akan lepas dengan yang namanya Setter dan Getter ini. Okay katakanlah kita memiliki sebuah class user seperti ini :

public class User{
private String name;
private int age;
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
public void setAge(int age){
this.age = age;
}
public int getAge(){
return age;
}
}

Dan kita bisa akses class di atas pada kotlin sebagai data class dan seperti berikut ini cara penggunaanya :

// membuat objectnya
val user = User()
// Melakukan Setter
user.name = "Rosid"
user.age = 23
// melakukan getter
val name = user.name
val age = user.age

Null Safety

Pada kotlin semua hal bersifat object dan kita tau pada JVM jika kita membuat sebuah object maka kita perlu memberi nilai atau instance dari sebuah object tersebut. Untuk itu kita perlu berhati — hati bila berurusan dengan object, apa bila sebuah object tidak memiliki nilai kemudian kita mengaksesnya maka akan mengakibatkan aplikasi yang kita buat menjadi crash atau force close dan lain sebagainya yang intinya code kita akan jadi error ketika di eksekusi pada JVM.

Beberapa object pada java itu bersifat null yang mana kita perlu melakukan pengamanan terhadap object yang null ini. Perhatikan code berikut ini.

val list = ArrayList<String>()

Variable di atas adalah variable yang benar dan dia memiliki sebuah instance akan tetapi tidak memiliki nilai. Jika kita lakukan akses data seperti ini misalnya :

val size = list.size() // tidak akan error karna ada instance 
val item = list[0] // akan error karna jumlah data 0
item.substring(1) // akan data Null Pointer Exceptions

Dan jika kita memasukkan ke variable maka perlu di perhatikan adalah menggunakan tanda ? pada saat kita akan menggunakan variable yang nilanya masih di ragukan.

val nullable: String? = item // dibolehkan, selalu bekerja
val notNull: String = item // dibolehkan, dan bisa error pada saat di jalankan

Arrays

Arrays adalah sebuah class yang biasa kita gunakan untuk membuat sebuah data array yang simple secara cepat.

//Pada java
List<Integer> data = Arrays.asList(1,2,3);
//Dengan Kotlin
val data = intArrayOf(1,2,3)

Dan masih banyak hal yang lainya dan jika temen — temen ingin membaca lebih detailnya silahkan buka tautan ini

Nah mungkin untuk kali ini segini saja dulu materi yang kita bahas, dan kita akan sambung pada tulisan saya selanjutnya. See you in the next blog post guys. Jangan lupa share article ini yaps.