繁体   English   中英

泛型拼图

[英]Generics Puzzler

我试图弄清楚如何使泛型跃过圈。

我有:

interface Root { }
interface Middle extends Root { }
class Type implements Root { }

还有许多“子类型”类:

class Subtype1 extends Type implements Middle { }
class Subtype2 extends Type implements Middle { }
...

我想要的是声明一个带有两个类型参数TS ,其中TType约束,而STMiddle约束。

我看不到使用泛型的方法来确保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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM