Cara Menentukan Tipe Data di Groovy

1. Perkenalan

Dalam tutorial singkat ini, kita akan menjelajahi berbagai cara untuk menemukan tipe data di Groovy.

Sebenarnya, ini berbeda tergantung apa yang kita lakukan:

  • Pertama, kita akan melihat apa yang harus dilakukan untuk kaum primitif
  • Kemudian, kita akan melihat bagaimana koleksi menghadirkan beberapa tantangan unik
  • Dan terakhir, kita akan melihat objek dan variabel kelas

2. Tipe Primitif

Groovy mendukung jumlah tipe primitif yang sama dengan Java. Kita dapat menemukan tipe data primitif dengan tiga cara .

Untuk memulai, mari kita bayangkan kita memiliki beberapa representasi usia seseorang.

Pertama-tama, mari kita mulai dengan operator instanceof :

@Test public void givenWhenParameterTypeIsInteger_thenReturnTrue() { Person personObj = new Person(10) Assert.assertTrue(personObj.ageAsInt instanceof Integer); }

instanceof adalah operator biner yang dapat kita gunakan untuk memeriksa apakah suatu objek adalah turunan dari tipe tertentu. Ini mengembalikan nilai true jika objek adalah turunan dari tipe tertentu dan false sebaliknya.

Juga, Groovy 3 menambahkan operator ! Instanceof baru . Ini mengembalikan nilai true jika objek tersebut bukan turunan dari tipe dan false sebaliknya.

Kemudian, kita juga bisa menggunakan metode getClass () dari kelas Object. Ini mengembalikan kelas runtime dari sebuah instance:

@Test public void givenWhenParameterTypeIsDouble_thenReturnTrue() { Person personObj = new Person(10.0) Assert.assertTrue((personObj.ageAsDouble).getClass() == Double) }

Terakhir, mari terapkan. operator kelas untuk menemukan tipe data:

@Test public void givenWhenParameterTypeIsString_thenReturnTrue() { Person personObj = new Person("10 years") Assert.assertTrue(personObj.ageAsString.class == String) }

Demikian pula, kita dapat menemukan tipe data dari tipe primitif apa pun.

3. Koleksi

Groovy memberikan dukungan untuk berbagai jenis koleksi.

Mari tentukan daftar sederhana di Groovy:

@Test public void givenGroovyList_WhenFindClassName_thenReturnTrue() { def ageList = ['ageAsString','ageAsDouble', 10] Assert.assertTrue(ageList.class == ArrayList) Assert.assertTrue(ageList.getClass() == ArrayList) }

Namun di peta, operator .class tidak dapat diterapkan:

@Test public void givenGrooyMap_WhenFindClassName_thenReturnTrue() { def ageMap = [ageAsString: '10 years', ageAsDouble: 10.0] Assert.assertFalse(ageMap.class == LinkedHashMap) }

Dalam potongan kode di atas, ageMap.class akan mencoba mengambil nilai kelas kunci dari peta yang diberikan . Untuk peta, disarankan untuk menerapkan getClass () daripada .class .

4. Objek & Variabel Kelas

Pada bagian di atas, kami menggunakan berbagai strategi untuk menemukan tipe data primitif dan koleksi.

Untuk melihat bagaimana variabel kelas bekerja, misalkan kita memiliki kelas Person :

@Test public void givenClassName_WhenParameterIsInteger_thenReturnTrue() { Assert.assertTrue(Person.class.getDeclaredField('ageAsInt').type == int.class) }

Ingat bahwa getDeclaredField () mengembalikan semua bidang dari kelas tertentu.

Kita bisa menemukan tipe objek apapun menggunakan operator instanceof, getClass () dan .class :

@Test public void givenWhenObjectIsInstanceOfType_thenReturnTrue() { Person personObj = new Person() Assert.assertTrue(personObj instanceof Person) }

Selain itu, kami juga dapat menggunakan operator keanggotaan Groovy di :

@Test public void givenWhenInstanceIsOfSubtype_thenReturnTrue() { Student studentObj = new Student() Assert.assertTrue(studentObj in Person) }

5. Kesimpulan

Di artikel singkat ini, kami melihat cara menemukan tipe data di Groovy. Sebagai perbandingan, metode getClass () lebih aman daripada operator .class . Kami juga membahas cara kerja in operator bersama dengan instanceof operator. Selain itu, kami belajar cara mendapatkan semua bidang kelas dan menerapkan operator .type .

Seperti biasa, semua potongan kode dapat ditemukan di GitHub.