我有以下抽象类:
public abstract class AbstractSharpCollection<T> implements SharpCollection<T>
和一个界面
public interface SharpCollection<T> extends Iterable<T>
{
SharpCollection<T> tail();
}
SharpCollection 中定义了许多其他方法,它们返回另一个 SharpCollection。所有这些方法的逻辑只依赖于迭代器。
我希望能够在 AbstractSharpCollection 上创建一个方法,这样对 tail() 的调用将返回子类的实例,而不是超类。
就像是
public <V extends SharpCollection<T>> V tail() { //code logic here }
我知道我可以在扩展 AbstractSharpCollection 的子类上重写返回类型,但是必须重写所有方法只是为了更改返回类型真的很丑陋、麻烦并且容易出错。
有什么办法可以实现我想要的吗?
谢谢您的帮助。