考虑下面的比赛:参数类型该类
public interface ITree<X>
{
...
ITree<X> Union(ITree<X> other);
...
}
的想法是,我要实现几种类型的树。但是,Union()
方法仅适用于如果您尝试将的两棵树组合在一起的。但是,上面的类型签名不会强制执行此限制。
所以,我的问题是:我如何写一个类型签名Union()
使得other
参数必须具有同一类型为this
? (显然,如果类型不匹配,我可以做一个动态运行时测试并抛出一个异常,但是如果可以完成的话,我会在编译时检查它)。
@JLRishe - 这不会是因为如果他们都执行“ITree”,您可以将“RedBlackTree ”与“SplayTree ”联合起来。 –
Lee
2013-03-14 19:20:54
爆炸!你是对的。我认为这个问题是指“X”。 – JLRishe 2013-03-14 19:23:05
@Lee我不确定这是泛型系统可以用任何有用的方式表达的类型约束。 (只是没有在界面中的方法。) – millimoose 2013-03-14 19:24:12