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

为什么lambda表达式是Java中的对象?[副本]

百里智勇
2023-03-14

在Java中lambda表达式是怎样的对象?作为函数式编程的一部分,lambda表达式如何在Java中实现,而Java是一种面向对象的语言?我需要哪些Java概念来理解lambda表达式?

共有1个答案

花高爽
2023-03-14

你需要了解一些事情:

1)功能接口

    只有一个公共方法的
  • 接口
public interface Runnable{
    void run();
}
    null

2)使用功能接口

  • 您可以在类中实现函数接口例如MyRunnable
java prettyprint-override">public class MyRunnable implements Runnable{
    public void run(){
        System.out.println("Hello world");
    }
}
  • 您可以在其他方法中传递MyRunnable类,它只是普通对象
public class MyClass{
    public void myMethod(Runnable runnable){
        runnable.run();
    }
}
    null
public static void main{
    MyClass myClass = new MyClass();
    myClass.myMethod(new MyRunnable());
}
    null
public static void main{
    MyClass myClass = new MyClass();
    myClass.myMethod(() -> System.out.println("Hello my world"));
}
  • 这将打印“你好,我的世界”
  • 您只是在创建Runnable的匿名实现并将其传递给MyMethod
  • 这只是句法上的糖分
public static void main{
    MyClass myClass = new MyClass();
    myClass.myMethod(new Runnable{
        public void run(){
            System.out.println("Hello my world");
        });
}
 类似资料:
  • 我知道使用lambda expression(LE)我们可以节省一些代码行,比如为函数接口创建对象。而且LE将更易读。但我确信这并不是提供该功能的主要原因。我在google上搜索,并在本文中找到了这段有趣的引用 在Java8之前,处理任何集合的元素都可以通过从集合中获取迭代器,然后迭代元素,然后处理每个元素来完成。如果需要并行处理这些元素,那么将由客户端代码完成。随着Java 8中Stream A

  • 问题内容: 我偶然发现了以下Java代码,该代码使用了方法参考 等价的lambda表达式是什么? 问题答案: 方法参考将首先求值,然后创建一个等效的表达式来捕获求值。通常,你将使用 与方法引用相同的方法来实现,但是此lambda表达式将在每次调用该方法时求值。 因此,确切的等效条件是: 如果有人;在两者之间进行调用,则会有所不同。

  • 上面的代码是我的功能接口。 下面的代码是我的lambda表达式。函数接口在我的lambda表达式中做什么,因为只有一个简单的'double'?如果没有功能接口,会是什么样子?

  • 如何在lambda表达式中将对象设置为另一个?我犯了错误

  • 我偶然发现以下Java代码使用了的方法引用: 的等效lambda表达式是什么?

  • 问题内容: 考虑以下Java 8代码段。 什么是越来越编译? 我知道Lambda并没有实现为匿名内部类。但是,因此接口必须在生成某种对象,但是尚不清楚在生成哪种对象。 Java 8中是否存在某种表示lambda表达式的新型对象? 更新 这是经过反编译的程序,该程序已使用eclipse java 8编译器编译,当您打开类文件时,以下输出来自eclipse。 看起来lambda表达式已变成包含lamb