Belirli Bir Örnekte Örnek Yöntem Başvuruları
Belirli bir nesneyi yakalayın ve geri çağrılar ile dinleyiciler için nesnenin örnek yöntemlerinden birine başvurun.
Belirli Bir Örnekte Örnek Yöntem Başvuruları, CoddyKit'te ücretsiz bir Java Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Java Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Java Academy kursu toplamda 4 dersten oluşur.
Belirli Örnek Başvurusu
Belirli bir örnekteki örnek metot başvurusu, belirli bir nesneyi yakalar ve o nesnenin metotlarından birine başvurur. Sözdizimi: 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Özel Bir Nesne Örneğini Yakalama
Herhangi bir nesne yakalanabilir. Metot başvurusu, oluşturulduğu andaki örneği kullanır:
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!Supplier Olarak Kullanma
Belirli bir nesneye bağlanan, bağımsız değişken almayan bir örnek metodu Supplier<T> ile eşleşir:
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)Predicate Olarak Kullanma
Boole türünde sonuç döndüren örnek metotlar, belirli bir örneğe bağlandığında Predicate ile eşleşir:
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")); // falseDinleyici / Geri Çağırma Deseni
Belirli örneklere ait metot başvuruları, olay dinleyicileri ve geri çağırmalar için idealdir; işleyici nesnesini doğal olarak yakalarlar:
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 instanceUygulamalı: Sınıfa Bağlı Günlükleyici
Bir Tüketici olarak kullanmak üzere bir günlükleyiciyi belirli bir günlükleyici örneğine bağlayın:
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 instanceReferans, Bağlama Anındaki Durumu Yakalar
Referans üzerinden görülen nesne durumu, referans oluşturulduğu andaki anlık görüntüyü değil, nesnenin canlı durumunu yansıtır:
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)Belirli ve Herhangi Bir Örneği Karşılaştırma
İki farklı yöntem referansı biçimi birbirine benzer görünür — aralarındaki farkı anlayın:
// 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 elementKullanım Alanı: İş Parçacığı Güvenli Yöntem Devri
Güvenli eşzamansız kullanım için bir hizmet nesnesindeki senkronize yöntemi işlevsel arayüz olarak bağlayın:
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()); // 3Yakalanan Örnek Null Olduğunda
Yöntem referansı oluşturulduğunda yakalanan nesne null ise NullPointerException bağlama sırasında değil, çağırma sırasında fırlatılır:
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");
}Karşılaştırma Özeti
Üç yöntem referansı biçiminin karşılaştırması:
- ClassName::staticMethod — statik, alıcı yok
- instance::instanceMethod — belirli nesneye bağlı
- ClassName::instanceMethod — alıcı akış öğesidir (herhangi bir örnek)
Hızlı Kontrol
EventHandler h = new EventHandler(); list.forEach(h::handle); verildiğinde, her öğe için handle çağrısının alıcısı nedir?
Özet: Belirli Örnek Yöntem Referansları
Temel çıkarımlar:
- Söz dizimi: instance::methodName — belirli bir nesneyi yakalar
- Yakalanan nesne, her çağırmada alıcı olur
- Geri çağrılar, dinleyiciler ve günlükleme kalıpları için idealdir
- Yakalanan örneğin canlı durumu referans üzerinden görülebilir
- Örnek null ise çağırma sırasında NPE oluşur (bağlama sırasında değil)
Sıkça Sorulan Sorular
“Belirli Bir Örnekte Örnek Yöntem Başvuruları” dersi ücretsiz mi?
Evet — “Belirli Bir Örnekte Örnek Yöntem Başvuruları” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Java Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Java Academy kursu toplamda 4 dersten oluşur.
“Belirli Bir Örnekte Örnek Yöntem Başvuruları” dersinde ne öğreneceğim?
Belirli bir nesneyi yakalayın ve geri çağrılar ile dinleyiciler için nesnenin örnek yöntemlerinden birine başvurun. Java Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Java Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Java Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.
“Belirli Bir Örnekte Örnek Yöntem Başvuruları” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Java Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Java Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Statik Yöntem Başvuruları
- Belirli Bir Örnekte Örnek Yöntem Başvuruları
- Herhangi Bir Örneğin Yöntem Başvuruları
- Yapıcı Başvuruları