为什么Java Stack.push给出一个返回类型,即使我不需要它?



我想知道为什么Stack中的push方法有返回类型?我检查了oracle文档,但只提到了返回类型。谁能告诉我为什么需要返回类型?

您不需要使用返回类型。您可以简单地忽略它,这是最有可能的用例。但是,如果您想要创建被压入的对象,将其压入堆栈,并维护对它的引用,则可以使用一行代码。

MyObject newOne = stk.push(new MyOjbect());

Stack的顶部现在包含了一个对新创建的MyObject实例的引用,但是在它被推入的作用域中也有一个对它的引用,以防你需要它执行进一步的操作而不从堆栈中删除它。

如果您非常关心开销,您可以简单地使用addElement()方法,它可以用更少的方法开销和无返回值来完成完全相同的事情。如果您查看与Java SDK捆绑在一起的Java源代码,您可以看到push()在底层调用addElement():

public E push(E item) {
    addElement(item);
    return item;
}

被推送的项也会返回,如API文档中所示:

public E push(E item)<p>

将一项压入堆栈顶部。这与

的效果完全相同
addElement(item)

参数:

item -要压入堆栈的项。

的回报:

item参数。 <——看这里

参见:

Vector.addElement(E)

当对象被立即检索和推送时,这是很有用的——像这样:

Something something = GetANew.something();
stack.push(something);

比这个长:

Something something = stack.push(GetANew.something());

当然只是为了方便。

相关内容

最新更新