我正试图弄清楚如何让泛型越过障碍。
我已经有:
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>>;
当然,两者都是非法的。也许我错过了什么魔法?
Handler<T extends Root, S extends Subtype>
不够吗?唯一的区别是T
可能比S
更具体,就这样。 - Paul BelloraHandler<T extends Root, S extends Subtype>
表示 Handler 仅绑定到单个子类型。我有几个子类型,这意味着 Handler 不再跨子类型通用。实际上,我的代码有半打子类型,这将意味着与特定子类型绑定的相同数量的处理程序。 - Nick Palmer