我目前有一个需要使用抽象和泛型的项目,但我什至不知道该从哪里开始。抽象类如下。public abstract class Links<AType> { abstract AType getElem(); //returns the head of the list abstract Links<AType> getNext(); //return the next link}这是扩展抽象类的类public class Cons<AType> extends Links<AType> { AType elem; Links<AType> next; Cons(AType elem, Links<AType> next) { this.elem = elem; this.next = next; } @Override AType getElem() { return elem; } @Override Links<AType> getNext() { return next; }}这是扩展抽象类的另一个类public class Nil<AType> extends Links<AType> { Nil(){} @Override AType getElem() { return null; } @Override Links<AType> getNext() { return null; }}这是应该实现所有内容的类public class LList<AType> { Links<AType> list; LList() { list = new Cons<>(); } Links<AType> getList() { return list; } AType get(int n, AType a) { Cons<AType> aTypeCons = new Cons<>(a, list); return null; } void add(AType elem) { //add to head of list } void remove(int i) { //remove ith element //do nothing if i is invalid } void print() { //prints the list }}我只需要一些帮助来弄清楚从哪里开始真正制作LList类。我不能弄清楚构造函数,因为Links是抽象的,所以我不能创建该对象,也不能创建新的Cons ,因为没有任何元素传递到构造函数中。但是,构造函数应该实例化一个新列表。我也无法弄清楚应该如何访问该列表的单个元素。如果我可以稍微了解一下构造函数中发生的事情,那么我应该能够弄清楚如何实现其余方法。 (adsbygoogle = window.adsbygoogle || []).push({}); 最佳答案 您的LList是一个单链列表,其中的每个元素都有一个值和一个指向其后列表的链接。列表的最后一个元素将始终是Nil对象,该对象表示一个空列表。首次初始化空列表时,只需分配list = new Nil<>();。将元素添加到列表时,可以将其重新分配为list = new Cons<>(elem, list);。要按索引访问列表中的元素,只需使用调用while的getNext()循环,直到达到所需的索引或找到列表的末尾为止。AType get(int n) { Links<AType> current = list; while (n > 0 && current instanceof Cons) { current = current.getNext(); n--; } return current.getElem();} (adsbygoogle = window.adsbygoogle || []).push({}); 10-08 01:50