Jeneriklerin çemberler arasından nasıl atlayacağını anlamaya çalışıyorum.Generics Puzzler
Ben:
interface Root { }
interface Middle extends Root { }
class Type implements Root { }
Ve birçok "Alt tür" sınıfları:
class Subtype1 extends Type implements Middle { }
class Subtype2 extends Type implements Middle { }
...
İstediğim T
Type
bağlı iki tür parametreleri T
ve S
, bir sınıf bildirmektir ve S
, T
ve Middle
tarafından bağlanır.
S
'un T
öğelerini uzattığından ve Middle
uyguladıklarından emin olmak için jeneriklerle bir yol göremiyorum.
class Handler<T extends Root, S extends T, S extends Middle>;
veya
class Handler<T extends Root, S extends <T extends Middle>>;
Ancak ne dersin
yasal şunlardır: İstediğim gibi bir şeydir. Belkide eksik olduğum bir sihir var mı?
Bunu yapamazsınız. Birden fazla sınırınız olabilir, ancak bunlar 0-1 Sınıf artı çoklu arayüzler olmalıdır. Çoklu bağlı durumda bir Genel türünüz olamaz. Bu kısıtlamanın saklandığından şüpheleniyorum çünkü çoklu sınırlardaki türün sözdizimi denetleyicisi için çok fazla karmaşıklık yaratabileceğinden, nadir görülen bir durum söz konusudur. – BevynQ
ile ilgili olarak: http://stackoverflow.com/a/13261667/697449 –
Teşekkürler. Bu benim de okumamdı, ancak spec'ta bir şeyi kaçırmanın mümkün olduğunu düşündüm. Öldürüyor! –