0Pricing
Java Academy · Pelajaran

Referensi Metode Instans pada Instans Tertentu

Tangkap objek tertentu dan referensikan salah satu metode instansnya untuk callback dan listener.

Referensi Metode Instans pada Instans Tertentu adalah pelajaran Java Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Java Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Java Academy mencakup 4 pelajaran total.

Referensi Instans Spesifik

Referensi metode instans pada instans tertentu menangkap objek tertentu dan mereferensikan salah satu metodenya. Sintaks: instance::methodName.

// System.out is a specific PrintStream instance
List<String> names = List.of("Alice","Bob","Carol");
names.forEach(System.out::println); // System.out is the captured instance

Menangkap Instans Objek Khusus

Objek apa pun dapat ditangkap. Referensi metode menggunakan instans tersebut pada saat pembuatan:

class Greeter {
    private String prefix;
    Greeter(String prefix) { this.prefix = prefix; }
    String greet(String name) { return prefix + ", " + name + "!"; }
}

Greeter g = new Greeter("Hello");
java.util.function.Function<String, String> greetFn = g::greet;

System.out.println(greetFn.apply("Alice")); // Hello, Alice!
System.out.println(greetFn.apply("Bob"));   // Hello, Bob!

Menggunakan sebagai Supplier

Metode instans tanpa argumen yang terikat pada objek tertentu sesuai dengan Supplier<T>:

StringBuilder sb = new StringBuilder("Hello World");
java.util.function.Supplier<String> toString = sb::toString;

System.out.println(toString.get()); // Hello World
sb.append(" !");
System.out.println(toString.get()); // Hello World ! (sb is live)

Menggunakan sebagai Predikat

Metode instans yang mengembalikan boolean sesuai dengan Predicate ketika terikat pada instans tertentu:

String prefix = "Java";
java.util.function.Predicate<String> startsWith = prefix::equals;
// Hmm, this checks if prefix.equals(candidate).
// More useful:
Predicate<String> startsWithJ = s -> s.startsWith("J");

// But a specific instance Predicate:
StringBuilder pattern = new StringBuilder("hello");
Predicate<String> equalsHello = ((CharSequence)"hello")::equals;
System.out.println(equalsHello.test("hello")); // true
System.out.println(equalsHello.test("world")); // false

Pola Listener / Callback

Referensi metode pada instans tertentu sangat ideal untuk listener peristiwa dan callback — referensi tersebut secara alami menangkap objek penangan:

class EventHandler {
    void onEvent(String event) {
        System.out.println("Handling: " + event);
    }
}

EventHandler handler = new EventHandler();
List<String> events = List.of("click","hover","submit");
events.forEach(handler::onEvent); // captures the specific handler instance

Praktik: Pencatat Log yang Terikat pada Kelas

Ikatkan pencatat log ke instans pencatat log tertentu untuk digunakan sebagai Consumer:

import java.util.logging.*;

Logger log = Logger.getLogger("MyApp");

List<String> messages = List.of("Starting","Processing","Done");
messages.stream()
    .map(String::toUpperCase)
    .forEach(log::info); // log is the specific Logger instance

Referensi Menangkap Status pada Waktu Pengikatan

Status objek yang terlihat melalui referensi mencerminkan status langsung objek tersebut, bukan cuplikan saat referensi dibuat:

List<String> list = new ArrayList<>(List.of("A","B"));
java.util.function.Supplier<Integer> sizeRef = list::size;

System.out.println(sizeRef.get()); // 2
list.add("C");
System.out.println(sizeRef.get()); // 3 (reflects live state)

Membandingkan Instans Tertentu dan Sembarang

Dua bentuk referensi metode yang berbeda terlihat serupa — pahami perbedaannya:

// Specific instance: s is captured at binding
String s = "hello";
Predicate<String> p1 = s::equalsIgnoreCase; // String::equalsIgnoreCase bound to 'hello'

// Arbitrary instance: receiver is the stream element
Function<String, String> p2 = String::toUpperCase; // receiver IS the element

Kasus Penggunaan: Delegasi Metode yang Aman untuk Utas

Ikatkan metode tersinkronisasi pada objek layanan sebagai antarmuka fungsional agar dapat digunakan secara asinkron dengan aman:

class Counter {
    private int count = 0;
    synchronized void increment(String ignored) { count++; }
    int get() { return count; }
}

Counter c = new Counter();
List<String> tasks = List.of("t1","t2","t3");
tasks.forEach(c::increment);
System.out.println(c.get()); // 3

Saat Instans yang Ditangkap Bernilai Null

Jika objek yang ditangkap bernilai null saat referensi metode dibuat, NullPointerException dilempar saat pemanggilan, bukan saat pengikatan:

StringBuilder sb = null;
// Reference is created without error:
java.util.function.Supplier<String> ref = sb::toString;
try {
    ref.get(); // NPE thrown here
} catch (NullPointerException e) {
    System.out.println("NPE at invocation");
}

Ringkasan Perbandingan

Tiga bentuk referensi metode dibandingkan:

  • ClassName::staticMethod — statis, tanpa penerima
  • instance::instanceMethod — terikat pada objek tertentu
  • ClassName::instanceMethod — penerimanya adalah elemen aliran (instans sembarang)

Pemeriksaan Singkat

Diberikan EventHandler h = new EventHandler(); list.forEach(h::handle); — apa yang menjadi penerima pemanggilan handle untuk setiap elemen?

Ringkasan: Referensi Metode Instans Tertentu

Pokok-pokok penting:

  • Sintaks: instance::methodName — menangkap objek tertentu
  • Objek yang ditangkap menjadi penerima untuk setiap pemanggilan
  • Ideal untuk panggilan balik, pendengar, dan pola pencatatan log
  • Status langsung instans yang ditangkap dapat terlihat melalui referensi
  • NPE saat pemanggilan jika instans bernilai null (bukan saat pengikatan)

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Referensi Metode Instans pada Instans Tertentu” gratis?

Ya — teks lengkap “Referensi Metode Instans pada Instans Tertentu” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Java Academy, upgrade ke CoddyKit PRO. Kursus Java Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Referensi Metode Instans pada Instans Tertentu”?

Tangkap objek tertentu dan referensikan salah satu metode instansnya untuk callback dan listener. Kamu berlatih Java Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Java Academy?

Tidak diperlukan pengalaman sebelumnya. Java Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.

Berapa lama pelajaran “Referensi Metode Instans pada Instans Tertentu” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Java Academy ini?

Ya. Setiap pelajaran Java Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Referensi Metode Statis
  2. Referensi Metode Instans pada Instans Tertentu
  3. Referensi Metode Instans Arbitrer
  4. Referensi Konstruktor
← Kembali ke Java Academy