我该怎么回?方法插入

时间:2015-09-29 14:25:11

标签: java

我们似乎在实现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;
    }
}

3 个答案:

答案 0 :(得分:2)

在Java中,返回类型在函数声明关键字

中指定
public ListInterface insert(E d) {

public,意思是在其类范围之外可访问,后跟ListInterFace,这是函数预期返回的返回类型。它也可以是voidStringDouble等,任何数据类型。

在这种情况下,您的函数希望您返回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;
}