Java 您能否在初始化期间实现接口?

Java 您能否在初始化期间实现接口?,java,interface,lambda,runnable,Java,Interface,Lambda,Runnable,我在阅读Oracle的一个lambda表达式教程时,遇到了以下代码: 我的问题是,为什么他们在创建类时没有实现Runnable?由于它们在初始化r1时重写了run方法,所以这是否解决了实现问题?是的,在Java中称为匿名类 当使用new操作符时,可以实现接口或扩展类,这将创建您当时定义的未命名子类的新实例。它主要用于编写代码以在另一个线程中使用或用作回调时,因为您只获得一个实例 Java8中新的lambda语法使用单个方法(如Runnable或中的接口)替换接口的匿名类。这就是他们在示例中演

我在阅读Oracle的一个lambda表达式教程时,遇到了以下代码:


我的问题是,为什么他们在创建类时没有实现Runnable?由于它们在初始化r1时重写了run方法,所以这是否解决了实现问题?

是的,在Java中称为匿名类

当使用
new
操作符时,可以实现接口或扩展类,这将创建您当时定义的未命名子类的新实例。它主要用于编写代码以在另一个线程中使用或用作回调时,因为您只获得一个实例


Java8中新的lambda语法使用单个方法(如Runnable或中的接口)替换接口的匿名类。这就是他们在示例中演示的内容。

我相信,这是在一个教程的背景下,他们这样做是为了演示您可以使用的各种选项。
public class RunnableTest {
  public static void main(String[] args) {

  System.out.println("=== RunnableTest ===");

  // Anonymous Runnable
  Runnable r1 = new Runnable(){

    @Override
    public void run(){
      System.out.println("Hello world one!");
    }
  };

  // Lambda Runnable
  Runnable r2 = () -> System.out.println("Hello world two!");

  // Run em!
  r1.run();
  r2.run();
  }
}