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 instanceMenangkap 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")); // falsePola 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 instancePraktik: 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 instanceReferensi 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 elementKasus 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()); // 3Saat 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
- Referensi Metode Statis
- Referensi Metode Instans pada Instans Tertentu
- Referensi Metode Instans Arbitrer
- Referensi Konstruktor