为什么Java Stack.push会提供返回类型,即使我不需要它?

时间:2014-05-21 14:52:53

标签: java stack push

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

2 个答案:

答案 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());

当然这只是为了方便。