Aslında, istediğinizi yapabilirsiniz . Birden fazla arabirim veya bir sınıf artı arabirim sağlamak istiyorsanız, joker karakterinizin şöyle görünmesini sağlamalısınız:
<T extends ClassA & InterfaceB>
Bkz Jenerik Eğitimi sun.com de, özellikle Sınırlı Tipi Parametreler sayfanın alt kısmında, bölüm. & InterfaceName
Gereksinim duyduğunuz her bir arabirimi kullanarak, isterseniz birden fazla arabirimi listeleyebilirsiniz .
Bu keyfi olarak karmaşık olabilir. Göstermek için, Collections#max
(iki satıra sarılmış olan) JavaDoc bildirisine bakın :
public static <T extends Object & Comparable<? super T>> T
max(Collection<? extends T> coll)
neden bu kadar karmaşık? Java Generics SSS'de belirtildiği gibi: İkili uyumluluğu korumak için .
Bu, değişken bildirimi için işe yaramaz gibi görünüyor, ancak bir sınıfa genel bir sınır koyarken işe yarıyor. Böylece, istediğinizi yapmak için birkaç çembere atlamanız gerekebilir. Ama sen bunu yapabilirsin. Sınıfınıza genel bir sınır koyarak böyle bir şey yapabilirsiniz ve sonra:
class classB { }
interface interfaceC { }
public class MyClass<T extends classB & interfaceC> {
Class<T> variable;
}
Bunun için variable
istediğiniz kısıtlama vardır. Daha fazla bilgi ve örnek için Java 5.0'daki Generics'in 3. sayfasına bakın . İçinde, <T extends B & C>
sınıf adının önce gelmesi ve arayüzlerin ardından gelmesi gerektiğini unutmayın . Ve elbette sadece tek bir sınıfı listeleyebilirsiniz.