我有一个在项目中使用的库中的接口Vector,无法修改...
interface Vector<T> {
public Vector<T> plus(Vector<T> v);
}
然后,我用类
FourVector
实现了它,但是问题出现在重写方法plus上。我希望FourVector
只能添加FourVector
,而不是所有类型的Vector!我试图做的是这样的事情(但显然是错误的)class FourVector<T> implements Vector<T> {
public Vector<T> plus(FourVector<T> v) {
...
}
}
有某种模式或解决方法可以实现此想法?
最佳答案
如果有Vector<T>
,则可以在编译时将任何类型的Vector<T>
传递给其add
方法。这就是界面的设计方式。
因此,在这方面,您的FourVector
不是真正的Vector
:
您是否接受但不实施Vector
或者您可以添加运行时检查:if (!(v instanceof FourVector)) throw new UnsupportedOperationException("Only FourVector allowed here");
关于java - 具有多余的父类(super class)参数的重写方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18286983/