【问题标题】:Is it conceptual mistake to use term "function" instead of "method" in java 7 and java 8?在 java 7 和 java 8 中使用术语“函数”而不是“方法”是概念上的错误吗?
【发布时间】:2016-02-06 01:49:10
【问题描述】:

这会导致混淆在 java7 和 java8 中互换使用术语“函数”与“方法”吗?

我知道 java 8 引入了一些概念,如 lambda 演算,它允许插入少量的函数范式。

lambda 演算、函数式编程中的函数。

【问题讨论】:

  • 我认为这只是术语约定的问题,在 C/C++ 中使用“函数”,在 Java 中使用“方法”。
  • 我认为 this question 实际上涵盖了这一点:即使它没有明确提到 Java 8 Functions,它们也是答案意义上的函数。
  • 另一方面,对象应该被称为类,反之亦然,因为Object是一个类,而Class.class是一个对象?
  • @Kayaman,真的,非常正确,尽管您的笔记主要与命名有关!我的问题涉及更广泛的范围,但是谢谢

标签: java function methods lambda java-8


【解决方案1】:

在谈到 Java-8 时,您可能会使用“函数”一词来指代函数式接口(具有单个抽象方法的接口)、实现该接口的类或函数式接口类型的表达式(包括 lambda 表达式或方法参考)。但是,您不应该将方法称为函数。这变得比以前的 Java 版本更重要,就像您在 Java-7 相关讨论中看到“函数”一词一样,您可以假设“方法”的意思。但在 Java-8 中,人们可能会认为您在谈论函数式接口,而不是方法。

所以可以这么说:

Stream.map 方法接受一个函数作为参数。

或者

一个Collector接口聚合了四个函数:supplier、accumulator、combiner和finisher。

或者

我将Objects::nonNull 函数传递给Stream.filter 方法。

但以下内容听起来令人困惑:

我在使用Math.sqrt 函数时遇到了一个奇怪的异常。

【讨论】:

    【解决方案2】:

    您可能会在非正式谈话中使用互换功能和方法,但如果您想要准确,请记住:

    • 方法总是与某个对象或类相关联,而函数则不是(尽管在 Java 中您不能在类或对象之外定义函数),
    • 函数必须始终返回一个值,方法可能不返回任何内容(void 返回类型不是实际值)。

    总的来说 - 您现在知道函数和方法之间存在区别,因此请牢记这一点并从现在开始使用适当的术语。

    【讨论】:

      【解决方案3】:

      函数与方法不同,与 Java 版本无关。 尽管使用 java 8 这些术语现在更有意义。 在早期版本的 java 中,您可以将函数视为静态方法,因为它们不绑定到类数据。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-09-01
        • 2023-03-09
        • 2020-08-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多