【问题标题】:Why does Java Stack.push give a return type even though I don't need it?为什么即使我不需要 Java Stack.push 也会给出返回类型?
【发布时间】:2014-05-21 14:52:52
【问题描述】:

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

【问题讨论】:

  • this question。无论如何,如果您不想使用结果,则不必使用。只需说stk.push(element),不要将结果分配给任何东西。返回的值将被忽略。

标签: java stack push


【解决方案1】:

您不是必须使用返回类型。您可以简单地忽略它,这是最有可能的用例。但是,如果您想创建被推送的对象,将其推送到堆栈并维护对它的引用,这可能会很有用,所有这些都只需要一行代码。

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

堆栈的顶部现在包含对新创建的 MyObject 实例的引用,但您在它被推送的范围内也有对它的引用,以防您需要它执行进一步的操作而不将其从堆栈中删除.

如果您非常关心开销,您可以简单地使用 addElement() 方法,它可以做完全相同的事情,但方法开销更少且没有返回值。如果您查看与您的 Java SDK 捆绑在一起的 Java 源代码,您会发现 push() 正在调用 addElement():

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

    return item;
}

【讨论】:

    【解决方案2】:

    被推送的项目也被返回,如API docs

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

    当然只是为了方便。

    【讨论】:

      猜你喜欢
      • 2012-07-14
      • 2019-04-14
      • 2019-11-20
      • 1970-01-01
      • 2014-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多