Java Birden Fazla Sınıflar İle Joker Karakteri Jenerik
Bir Sınıf nesnesi olmak istiyorum, ama Bir sınıf genişletmek ve arayüz B. uygulamak için temsil gücü ne olursa olsun istiyorum
YapabileceÄŸim:
Class<? extends ClassA>
Ya da:
Class<? extends InterfaceB>
ama ikisini aynı anda yapamam. Bunu yapmanın bir yolu var mı?
CEVAP
Aslında sanaolabilirne yapmak istiyorsan yap. Eğer birden çok arabirimi veya sınıf artı bir arayüzleri sağlamak istiyorsanız, joker şöyle bir şey var:
<T extends ClassA & InterfaceB>
Sun.com, Bounded Type Parameters bölümüne özellikle Generics Tutorial, Bu sayfanın altındaki bakın. Aslında ihtiyacın olursa, her biri için & InterfaceName kullanarak isterseniz birden fazla arabirim listeleyebilirsiniz.
Bu keyfi karmaşık olabiliyor. Göstermek için, hangi Collections#max: JavaDoc bildirimi bakın
public static <T extends Object & Comparable<? super T>> T
max(Collection<? extends T> coll)
neden bu kadar karmaşık? Java Jenerik SSS dediği gibi: To preserve binary compatibility.
Bu değişken tanımlaması için çalışmıyor gibi görünüyor, ama bir sınıf üzerinde genel bir sınır koymak zaman işe yarıyor. Bu nedenle, ne istediğinizi yapmak için, birkaç çemberin içinden atlamak zorunda kalabilirsiniz. Ama bunu yapabilirsiniz. Böyle bir şey, kendi sınıf ve sonra da genel bir sınır koyarak yapabilirsiniz:
class classB { }
interface interfaceC { }
public class MyClass<T extends classB & interfaceC> {
Class<T> variable;
}
variable bunu almak zorunda istediğiniz kısıtlama. Daha fazla bilgi ve örnekler için Generics in Java 5.0 sayfa 3'e bak. Not <T extends B & C> sınıf adı her şeyden önce gelir, ve ARAYÜZLERİ izleyin. Ve tabii ki sadece tek bir sınıf listeleyebilirsiniz.

Genel bir yöntem üzerinde birden fazla...
Nasıl birden fazla sınıflar ile bir öğ...
Java sınıf yolu içinde birden fazla ka...
Nasıl bir HTML kabı için birden fazla ...
jQuery - Seçme Birden fazla Sınıflar...