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