Object obj = (Runnable)()->{}这句代码为什么要加上(Runnable)
时间: 2023-02-07 22:33:36 浏览: 57
这句代码中的 (Runnable) 是一个强制类型转换。
Lambda 表达式本质上是一个匿名函数,它没有类型。为了将 Lambda 表达式赋值给变量 obj,我们需要告诉编译器 Lambda 表达式的类型。(Runnable) 是告诉编译器,Lambda 表达式的类型是 Runnable。
如果没有加上 (Runnable),编译器会报错,因为它无法判断 Lambda 表达式的类型。
更多关于 Lambda 表达式的内容,你可以参考 Java 8 中的新特性,或者在网上查找资料。
相关问题
Object obj = (Runnable)()->{}
你好! 这个语句的意思是,创建一个名为 obj 的对象,它是一个 Runnable 类型的对象,并且这个对象是由一个 lambda 表达式创建的。lambda 表达式是一种匿名函数,允许你简洁地定义函数。在这个例子中,lambda 表达式的内容是空的,所以这个对象没有任何实际的功能。
既然Java中Lambda表达式的结果是对象,为什么Object obj = ()->{}会报错
在 Java 中,Lambda 表达式的结果是对象,但这个对象必须是一个函数式接口的实例。如果你尝试将 Lambda 表达式赋值给 `Object` 类型的变量,就会报错,因为 `Object` 类型并不是一个函数式接口。
举个例子,你可以这样使用 Lambda 表达式:
```
Runnable r = () -> {};
```
这里,`Runnable` 是一个函数式接口,你可以使用 Lambda 表达式来创建它的实例。
如果你想将 Lambda 表达式赋值给 `Object` 类型的变量,你需要将 Lambda 表达式装箱成对象,比如使用 `Supplier` 接口:
```
Supplier<Object> supplier = () -> {};
Object obj = supplier.get();
```
这样就可以避免编译错误了。