Fitur Java Modern: var, Text Block, Sealed & Pattern Matching

Kode Java yang lebih ringkas dengan var, text block, instanceof pattern, sealed interface, record pattern, dan switch dengan pola.

Part 16 dari 17 ± 50 menit Gratis

Java tidak lagi bertele-tele

Java dulu dikenal panjang dan kaku. Sejak Java 10 hingga 21, bahasa ini menambah banyak fitur yang membuat kode lebih ringkas tanpa kehilangan keamanan tipe. Bab ini merangkum yang paling berguna.

FiturVersi
varJava 10
Switch expressionJava 14
Text blockJava 15
RecordJava 16
instanceof patternJava 16
Sealed class/interfaceJava 17
Switch dengan pola & record patternJava 21

var: tipe lokal disimpulkan

var nama = "Budi";                       // String
var umur = 25;                           // int
var daftar = new ArrayList<String>();    // ArrayList<String>
for (var item : daftar) { ... }

Java tetap bertipe statis; compiler yang menebak tipenya. Aturan: hanya untuk variabel lokal yang langsung diberi nilai (bukan field, parameter, atau tipe kembalian). Pakai bila tipenya sudah jelas dari ruas kanan.

Text block: teks banyak baris

String json = """
        {
          "nama": "Budi",
          "umur": 25
        }
        """;

Diawali dan diakhiri """. Tidak perlu \n atau escape untuk tanda kutip. Indentasi umum otomatis dibuang berdasarkan posisi """ penutup. Sangat cocok untuk JSON, SQL, dan HTML.

instanceof pattern: cek tipe sekaligus cast

// Cara lama
if (obj instanceof String) {
    String s = (String) obj;
    System.out.println(s.length());
}

// Cara baru
if (obj instanceof String s) {
    System.out.println(s.length());       // s langsung tersedia
}
if (obj instanceof String s && s.length() > 3) { ... }

Sealed: batasi siapa yang boleh mewarisi

Dengan sealed kamu menentukan daftar tertutup subtipe. Compiler jadi tahu semua kemungkinan.

public sealed interface Bentuk permits Lingkaran, Persegi {}

public record Lingkaran(double jariJari) implements Bentuk {}
public record Persegi(double sisi) implements Bentuk {}

Subtipe harus berstatus final (record otomatis final), sealed lagi, atau non-sealed.

Switch dengan pola (Java 21)

static double luas(Bentuk b) {
    return switch (b) {
        case Lingkaran l -> Math.PI * l.jariJari() * l.jariJari();
        case Persegi p   -> p.sisi() * p.sisi();
    };   // tanpa default: compiler memastikan semua kasus tercakup
}

Karena Bentuk sealed, compiler memeriksa bahwa semua subtipe sudah ditangani. Bila nanti kamu menambah Segitiga dan lupa menangani, kode gagal dikompilasi — bug tertangkap lebih awal. (Di Java 17 fitur ini masih preview; jalankan dengan Java 21 ke atas.)

Record pattern (Java 21)

Membongkar record langsung di pola:

if (b instanceof Persegi(double sisi)) {
    System.out.println("Sisi: " + sisi);
}

return switch (b) {
    case Lingkaran(double r) -> Math.PI * r * r;
    case Persegi(double s)   -> s * s;
};

Guard dengan when

String kategori = switch (obj) {
    case Integer i when i < 0 -> "negatif";
    case Integer i             -> "angka";
    case String s              -> "teks " + s.length();
    case null                  -> "kosong";
    default                    -> "lainnya";
};

Fitur kecil yang berguna

  • List.of(...), Map.of(...), Set.of(...) — koleksi immutable ringkas.
  • "abc".repeat(3), " x ".strip(), "".isBlank() — tambahan method String.
  • stream.toList() — tanpa Collectors (Java 16).
  • Helpful NullPointerException — pesan error menyebut persis variabel mana yang null.

Versi mana yang dipakai?

Gunakan versi LTS: 17 atau 21. Kode di bab ini berjalan di Java 17 kecuali bagian "Switch dengan pola" dan "record pattern" yang memerlukan Java 21. Periksa dengan java -version.

Error umum

  • 'var' is not allowed here → dipakai pada field/parameter, atau tanpa nilai awal.
  • the switch expression does not cover all possible input values → ada subtipe yang belum ditangani; tambahkan case atau default.
  • class is not allowed to extend sealed class → subtipe tidak tercantum di permits.

Praktikkan langsung, gratis

Tulis dan jalankan kode langsung di browser, dapatkan penilaian otomatis. Daftar gratis kapan saja untuk menyimpan progres dan meraih sertifikat.

Coba latihan sekarang, tanpa daftar
Bagikan: WhatsApp Facebook LinkedIn X