我有一个在项目中使用的库中的接口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/

10-10 00:57