我正在试图弄清楚如何让泛型跳过篮球。
我有:
interface Root { }
interface Middle extends Root { }
class Type implements Root { }
许多“Subtype”类:
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>>;
但当然两者都不合法。也许有一些我不知道的魔法?
答案 0 :(得分:2)
尝试引入一个扩展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> { //...
答案 1 :(得分:0)
或者你可以自己制作S:
interface SInt<A,B> {}
class Handler<T extends Root, S extends SInt<T, Middle>>{}