gpt4 book ai didi

Java 函数式接口(interface)与具有较少输入参数的方法匹配

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:34:07 24 4
gpt4 key购买 nike

前几天我写了一个 Intellij 告诉我可以简化的函数。我有一个带有一个方法的功能接口(interface),它有 2 个参数。它的返回类型与第一个输入参数相同。

事实证明,我可以发送对只需要 1 个参数(最后一个参数)的方法的引用,只要它返回正确的类型即可。我尝试在功能接口(interface)中切换 Type1 和 Type2 参数的顺序,但这没有用。我不认为这应该有效。有人可以解释为什么它有效或将文档链接给我吗?我找不到任何信息。

工作示例

public class Testcase {

private String string;

@FunctionalInterface
interface WithFunction<Type1, Type2> {
Type1 apply(Type1 type1, Type2 type2);
}

public static void main(String[] args) {
WithFunction<Testcase, String> withFunction = Testcase::withString;
Testcase testcase = withFunction.apply(new Testcase(), "string");
System.out.println(testcase.string);
}

public Testcase withString(String string) {
this.string = string;
return this;
}

}

最佳答案

你的 public Testcase withString(String string)方法有两个参数:第一个是隐式的 - Testcase调用方法的实例,第二个是显式的 - String争论。

因此方法引用Testcase::withString可分配给类型为 WithFunction<Testcase, String> 的变量.

当您调用 withFunction.apply(new Testcase(), "string") 时, 一个 Testcase实例已创建,String “字符串”传递给 withString(String string)该实例的方法。

关于Java 函数式接口(interface)与具有较少输入参数的方法匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46769429/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com