我认为我的 Java 应用程序存在设计问题,但我不知道如何解决或绕过它。
假设我有一个接口(interface)和一个实现它的抽象类,如下所示:
public interface IntegerCollection extends Collection<Integer> {
public int sum();
}
public abstract class AbstractIntegerCollection
extends AbstractCollection<Integer> implements IntegerCollection {
public int sum() {
// fancy code to calculate the sum of all collection members (just an example)
}
}
现在我想通过使用 Collection 的现有实现(例如 LinkedList)使此类可实例化;像这样的东西:
public class IntegerLinkedList extends AbstractIntegerCollection, LinkedList<Integer> {
}
IntegerCollection ic = new IntegerLinkedList();
但是,这不起作用,因为 Java 不支持扩展多个类。而且它对我来说看起来很丑陋,因为它混合了层次结构。
当然,我可以让 IntegerLinkedList 实现 IntegerCollection,而不是让它扩展 AbstractIntegerCollection。但随后,我必须在所有其他实现(例如 IntegerArrayList)中重复 sum() 的代码。
有更好的方法吗?
最佳答案
我不确定您到底想要实现什么,但是您可以实现 List
而不是扩展 LinkedList
public class IntegerLinkedList
extends AbstractIntegerCollection
implements List<Integer>
{
}
但是,您需要实现List
的所有抽象方法。
关于java - 如何绕过Java无法从多个类扩展的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46620750/