首页 > 解决方案 > 无法理解 Java 8 的 Function<>

问题描述

当我学习如何使用各种新工具时,我遇到了我无法理解的语法(函数 x -> ...),如果可能的话,我希望有人编写等效的代码,这样我可以更好地理解它。

Function<String, HashSet<String>> asSet = (String x) ->
      new HashSet<String>() {{
        do_something(x);
      }};

任何使用更传统语法而不是奇怪函数的代码块都将不胜感激,并有助于我更好地理解 Java!

标签: javajava-8

解决方案


可以用匿名类代替:

Function<String, HashSet<String>> asSet = new Function<>() {
    @Override
    public HashSet<String> apply(String s) {
        return new HashSet<>() {{
            do_something(s);
        }};
    }
};

您只需实现功能接口apply的方法:Function

请注意,函数式接口的实例可以使用 lambda 表达式、方法引用或构造函数引用来创建。

查看更多Java 8 中函数式接口的用途是什么?


推荐阅读