首页 > 解决方案 > 是否可以使用 -> 指定函数类型

问题描述

我有以下方法定义,它有效。

public static String runFunction2(Function<String,String> function, String input) {
    return function.apply(input);
}

但我想像 Scala 一样明确指定函数类型:

public static String runFunction(String -> String function, String input) {
    return function.apply(input);
}

上面的代码有编译错误,Java 8 不支持这个语法吗?

标签: java

解决方案


不,Java 不支持这种语法。事实上,Java 对函数类型1没有任何特殊语法。

Java 函数类型是一种 Java 接口类型,您需要使用与使用任何接口类型时相同的语法。

Java 仅具有用于表达函数值的特殊语法(例如 lambda 和方法引用)。


1 - 未来的 Java 版本可能不是不可能的,但我不会屏住呼吸等待......


推荐阅读