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

功能接口实现和用例

墨翔宇
2023-03-14

我只是想写一个功能接口来理解不同的用例。

通过查看我编写的以下代码,我了解可以使用lambda表达式实现不同的实现。除此之外,还有人能展示复杂的实现吗?

是否可以在lambda表达式中使用其他默认方法,即addLikeAnywhere Way?如果是,在我的例子中如何?

为什么我只有一个抽象方法的接口?在我的界面中只有一个抽象方法的用例是什么?

public class Calculator {

    public static void main(String[] args) {
        ICalculator i = (int a, int b) -> a + b;
        System.out.println(i.add(5, 2));
        i = (int a, int b) -> a + b + a;
        System.out.println(i.add(5, 2));
    }
}

@FunctionalInterface
interface ICalculator {

    public int add(int a, int b);

    default int addLikeThis(int a, int b) {
        return a + b;
    }

    default int addLikeOtherWay(int a, int b) {
        return a + b + a + b;
    }

}

共有2个答案

刘焱
2023-03-14

为什么我只有一个抽象方法的接口?在我的界面中只有一个抽象方法的用例是什么?

以便于使用lambda表达式,这些表达式是无名函数。Lambda表达式使代码富有表现力并减少混乱。它还使代码更具可读性。这是基于我使用lambda表达式的经验。

陈霄
2023-03-14

“是否可以在lambda表达式中使用默认方法?”对事实上,许多函数接口都包含默认方法。一个接口中只需要一个抽象方法就可以成为函数接口,否则lambda将“未实现”其他接口方法,这是不允许的。但这里是如何应用默认值的。下面的BiFunction接口是从API源代码sans JavaDoc中提取的。

以下代码之所以有效,是因为binarymoperatorunarymoperatorextendBiFunctionFunction

      BinaryOperator<Integer> add = (numb1,numb2)->numb1+numb2;
      UnaryOperator<Integer> mul = resultFromAdd->resultFromAdd*20;
      BinaryOperator<Integer> addThenMul = (numb1,numb2) ->add.andThen(mul).apply(numb1,numb2);
      int result = addThenMul.apply(10,20); // produces (10+20)*20 = 600

以下内容是从JavaAPI源文件中提取的。

       @FunctionalInterface
       public interface BiFunction<T, U, R> {

          R apply(T t, U u);

          default <V> BiFunction<T, U, V> andThen(
                Function<? super R, ? extends V> after) {
             Objects.requireNonNull(after);
             return (T t, U u) -> after.apply(apply(t, u));
          }
       }

在上面的示例代码中,我可以使用BiFunction

 类似资料:
  • 本文向大家介绍ThinkPHP实现支付宝接口功能实例,包括了ThinkPHP实现支付宝接口功能实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了ThinkPHP实现支付宝接口功能的方法。分享给大家供大家参考。具体分析如下: 最近做系统,需要实现在线支付功能,毫不犹豫,选择的是支付宝的接口支付功能,这里我用的是即时到帐的接口,具体实现的步骤如下: 一、下载支付宝接口包 下载地址:https

  • 本文向大家介绍php接口实现拖拽排序功能,包括了php接口实现拖拽排序功能的使用技巧和注意事项,需要的朋友参考一下 列表拖拽排序是一个很常见的功能,但是后端接口如何处理却是一个令人纠结的问题 如何实现才能达到效率最高呢? 先分析一个场景,假如有一个页面有十条数据,所谓的拖拽就是在这十条数据来来回回的拖,但是每次拖动都会影响到其他数据例如把最后一条拖到最前面,那么后面九条就自动往后移,反之也是,嗯~

  • 本文向大家介绍python3 实现调用串口功能,包括了python3 实现调用串口功能的使用技巧和注意事项,需要的朋友参考一下 python调用串口,写入数据 以上这篇python3 实现调用串口功能就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。

  • 本文向大家介绍Design patterns 使用Java 8功能接口实现Strategy模式,包括了Design patterns 使用Java 8功能接口实现Strategy模式的使用技巧和注意事项,需要的朋友参考一下 示例 本示例的目的是展示如何使用Java 8功能接口实现策略模式。我们将从经典Java中的简单用例代码开始,然后以Java 8方式对其进行重新编码。 我们使用的示例问题是一系列

  • 但这会产生以下错误: 更新 我试图创建一个类,实现,它基本上试图将对象表示为,其中对象可以是任何类型。当前正在使用和操作和方法中的字段,并使用上述方法创建和对象以调用getter和setter方法。我想知道是否可以将这两个单独的方法合并为一个。 可用作到的示例类: 下面是预期的用法:

  • 他能给我建议和解决方案。非常感谢。请帮帮我!

  • 本文向大家介绍java调用微信接口实现网页分享小功能,包括了java调用微信接口实现网页分享小功能的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了java调用微信接口实现网页分享小功能的具体代码,供大家参考,具体内容如下 // 获取access_token  *注意* 经过实际开发测试,微信分享不支持跨域请求,因此获取access_token的请求必须从服务器发起,否则无法获取到ac

  • 问题内容: 例如,如果我们具有以下接口: 以下结构: 并实现了接口: 然后在我们的主要功能中,如果我们想测试一下,将无法正常工作: 这确实按预期工作: 我想念什么?:-) 问题答案: 的接收者是一个值,因此您正在更改结构的副本。 更改为