我们似乎在实现ListInterface中给出的insert方法时遇到了问题。你能帮助我们找到合适的类型返回吗?
//Method in class list:
public ListInterface insert(E d) {
Node c = new Node(d, null, current);
current.prior = c;
return ????;
}
public interface ListInterface<E extends Data<E>> extends Clonable<ListInterface<E>> {
}
private class Node{ // Inner class for the implementation of the List class.
E data;
Node prior,
next;
public Node(E d) {
this(d, null, null);
}
public Node(E data, Node prior, Node next) {
this.data = data == null ? null : data;
this.prior = prior;
this.next = next;
}
}
答案 0 :(得分:2)
在Java中,返回类型在函数声明关键字
中指定public ListInterface insert(E d) {
public
,意思是在其类范围之外可访问,后跟ListInterFace
,这是函数预期返回的返回类型。它也可以是void
,String
,Double
等,任何数据类型。
在这种情况下,您的函数希望您返回ListInferface
对象。
在insert
函数的某处,您需要实例化返回对象,其位置如下:
ListInferfaceImplement x = new ListInterfaceImplement();
//do list stuff
return x;
编辑:你可能没有实例化那个确切的对象(我相信评论说你不能实例化一个接口),而是一个实现这个接口的对象。
如果您希望insert方法返回Node
,则需要让Node
类实现ListInterface
private class Node implements ListInterface {
答案 1 :(得分:1)
将项目添加到列表后返回列表实现是非常奇怪的。
优先方法是成功/失败值 - 布尔值。
但是如果你想继续这个,那么就说你正在为LinkedList编写实现,然后
class LinkedList extends ListInterface{
public ListInterface insert(E d) {
Node c = new Node(d, null, current);
current.prior = c;
return this;
}
}
答案 2 :(得分:0)
似乎insert
函数旨在允许链接。它允许你像这样链接方法调用:
// For the sake of example, assume String implements Data<E>
// and that List<E> implements ListInterface<E>.
ListInterface<String> list = new List<>();
list.insert("a")
.insert("b")
.insert("c");
这个想法是,最后,所有三个字符串都被添加到列表中。 insert
函数返回ListInterface
只是为了允许这种更短的语法。
您希望所有这些方法都将元素插入list
,因此您应该确保您的方法自行返回:
public ListInterface insert(E d) {
Node c = new Node(d, null, current);
current.prior = c;
return this;
}