[英]Generics Puzzler
我试图弄清楚如何使泛型跃过圈。
我有:
interface Root { }
interface Middle extends Root { }
class Type implements Root { }
还有许多“子类型”类:
class Subtype1 extends Type implements Middle { }
class Subtype2 extends Type implements Middle { }
...
我想要的是声明一个带有两个类型参数T
和S
,其中T
受Type
约束,而S
受T
和Middle
约束。
我看不到使用泛型的方法来确保S
扩展T
并实现Middle
。 我想要的是这样的:
class Handler<T extends Root, S extends T, S extends Middle>;
要么
class Handler<T extends Root, S extends <T extends Middle>>;
但是当然两者都不合法。 也许我缺少某种魔术?
尝试引入一个扩展SubType
并实现Middle
的抽象类,以便可以在Handler
使用其类型。
abstract class MiddleSubtype extends Subtype implements Middle { }
然后,
class Handler<T extends Root, S extends MiddleSubtype> { //...
编辑:对问题的更新后,相同的想法将看起来像:
abstract class MiddleType extends Type implements Middle { }
class Subtype1 extends MiddleType { }
class Subtype2 extends MiddleType { }
...
class Handler<T extends Root, S extends MiddleType> { //...
或者您可以使S通用:
interface SInt<A,B> {}
class Handler<T extends Root, S extends SInt<T, Middle>>{}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.