Aşağıdaki sınıfı aldığımı varsayalım:Java Generics: Object o sınıfının <E> ile karşılaştırılması
public class Test<E> {
public boolean sameClassAs(Object o) {
// TODO help!
}
}
o
'nin E
ile aynı sınıfta olup olmadığını nasıl kontrol edebilirim?
Test<String> test = new Test<String>();
test.sameClassAs("a string"); // returns true;
test.sameClassAs(4); // returns false;
(Object o)
yöntem imzasını bir üst sınıfı geçersiz kıldığımdan ve yöntem imzamı seçmemden dolayı değiştiremiyorum.
Ayrıca, bir döküm teşebbüsüne gitme yoluna gitmemek ve daha sonra başarısız olursa ortaya çıkan istisnaları yakalamak yerine tercih ederim.
: gibi
böylece sameClassAs yöntemi bakmak gerekir. Veya kullanmak için özel bir neden var ==? – ordnungswidrig
Bunlar eşdeğerdir. IMO == okumak daha kolay (okuyucu, tür hakkında bilmek zorunda olduğu anlamına gelse de). Inlining'den önce daha hızlıdır. Şimdi, test ettiğim gibi görünmeyen bir nezaket. –