我想知道为什么Stack中的push方法有返回类型? 我检查了Oracles文档,但只提到了返回类型。谁能告诉我为什么需要返回类型?
答案 0 :(得分:2)
您不是必需来使用返回类型。你可以简单地忽略它,这是最有可能的用例。但是,如果您想要创建被推送的对象,将其推送到堆栈并保持对它的引用,这一切都很有用,所有这些都只需一行代码。
MyObject newOne = stk.push(new MyOjbect());
Stack的顶部现在包含对新创建的MyObject实例的引用,但是在推送它的范围内也有对它的引用,以防你需要它来执行进一步的操作而不从栈中删除它
如果你非常关心开销,你可以简单地使用addElement()方法,它可以用更少的方法开销和没有返回值来完成同样的事情。如果您查看Java SDK附带的Java源代码,您可以看到push()正在调用addElement():
public E push(E item) {
addElement(item);
return item;
}
答案 1 :(得分:0)
还会返回推送的项目,如API docs:
中所示推
public E push(E item)<p>
将项目推到此堆栈的顶部。这与以下内容具有完全相同的效果:
addElement(item)
参数:
item - 要推送到此堆栈的项目。
返回:
项目参数。&lt; - 请看这里
另见:
Vector.addElement(E)
当立即检索并推送对象时,这非常有用 - 如下所示:
Something something = GetANew.something();
stack.push(something);
比这长:
Something something = stack.push(GetANew.something());
当然这只是为了方便。