当前位置: 首页 > 知识库问答 >
问题:

什么时候使用Java函数而不是普通方法?

崔高远
2023-03-14
Function<Integer, Double> half = a -> a / 2.0;
Function<Double, Double> triple = b -> b * 3;
double result = half.andThen(triple).apply(8);
private Double half(int a) {
    return a / 2.0;
}
private Double triple (int b) {
    return b * 3;
}
double result = triple(half(8));
  1. 将函数链接在一起的执行(例如,andThen&compose)
  2. Java内部的用法
  3. 作为函数的访问修饰符倾向于用private而不是public定义,而方法可以是?

基本上,我很想知道,在什么情况下,我们更喜欢使用函数而不是普通方法?是否有无法或难以使用的用例,或用普通方法转换的用例?

共有1个答案

穆劲
2023-03-14

传递函数性而不是使用重写的继承,即匿名实例

假设您创建了一个类,但必须提供一位计算。

class C {
    protected abstract int f(int x);
}

class Child1of99 extends C {
    @Override
    protected int f(int x) { return x / 42; }
}

new C() {
    @Override
    protected int f(int x) { return x / 42; }
}
class C {
    private final IntOperation f;

    C(IntOperation f) {
        this.f = f;
    }
}

 new C(x -> x / 42);
 类似资料:
  • 问题内容: Python的Zen指出,只有一种方法可以做事情-但我经常遇到决定何时使用函数以及何时使用方法的问题。 让我们举一个简单的例子- ChessBoard对象。假设我们需要某种方式使董事会上所有合法的King举动均可用。我们写ChessBoard.get_king_moves()还是get_king_moves(chess_board)? 我得到的答案基本上没有定论: 为什么Python使

  • 问题内容: 嗨,我想知道何时才是使用htmlspecialchars()的适当位置。是在将数据插入数据库之前还是从数据库中检索数据时? 问题答案: 仅在将数据回显为HTML时才应调用此方法。 不要将转义的HTML存储在数据库中;它只会使查询更烦人。 数据库应存储您的实际数据,而不是其HTML表示形式。

  • 问题内容: 我是一名C ++程序员,偶尔使用MySQL处理数据库,但是我的SQL知识非常有限。但是,我当然愿意改变这一点。 目前,我正尝试仅通过SQL查询对数据库中的数据进行分析(!)。但是我将放弃,而是将数据导入C 并使用C 代码进行分析。 我已经与同事讨论了这一点,他们也促使我使用C ++,他说SQL并不是用于复杂的分析,而是主要用于导入(从现有表中)和导出(到新表中)数据,还有更多内容。例如

  • 我被要求评估RabbitMQ而不是Kafka,但我发现很难找到一种比Kafka更适合消息队列的情况。有人知道消息队列在吞吐量、持久性、延迟或易用性方面更适合的用例吗?

  • 我是socket.io的新手,已经用node/express/socket.io编写了我的第一个应用程序。我想向公众发布我的应用程序,但我担心它对很多人都不起作用。我有几个朋友测试了我的应用程序,一切都很顺利(这是一个非常简单的应用程序)。我担心的是:现在每个连接似乎都在使用websockets,这正是我想要的。但是,我的应用程序有时会因为客户端的一些奇怪的事情而降级为“投票”吗?如果是,sock

  • 问题内容: jQuery如何使用普通的JavaScript?例如, 什么是JavaScript的方式来询问是否有? 问题答案: 您可以检查是否匹配。 匹配一个单词中断。 或者,您可以使用jQuery自己的实现: 为了回答您的更一般性的问题,您可以在github上查看jQuery的源代码,或者在此源代码查看器中专门查看源代码。

  • 问题内容: 这里的快速问题:为什么不总是在Java中使用ArrayLists?除了额外的有用功能之外,它们显然具有与数组相同的访问速度。我理解它的局限性,因为它不能容纳原语,但是可以通过使用包装程序轻松地减轻这种情况。 问题答案: 如果需要原始类型的集合,那么数组很可能是完成这项工作的最佳工具。装箱是比较昂贵的操作。对于将用作图元的图元集合(不包括地图),我几乎总是使用数组来避免重复装箱和拆箱。

  • 问题内容: 我怎么能说: 为什么函数调用中不需要括号,而最后一行呢? 问题答案: 是一个功能 调用该函数并产生该函数返回的任何值。 setTimeout的目的是在一段时间后运行代码。你需要的功能只是传递给它(这样的setTimeout可以自称在适当的时候函数),因为如果你将它传递给setTimeout的前调用的函数(用括号),将执行 现在 而不是1秒后,。