作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我想弄清楚如何让泛型跳过障碍。
我有:
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<绑定(bind)
和 S
由 T
和 Middle
绑定(bind)。
我看不出有什么方法可以确保 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> { //...
关于java - 泛型益智游戏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15671619/
我是一名优秀的程序员,十分优秀!