我想知道为什么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());
当然只是为了方便。