我有此代码:
new Thread(new Runnable() {
@Override
public void run() {
//implement
}
});
我的IDE(intellij)建议使用:
new Thread(() -> {
//implement
});
此保证是同一回事吗?我问这个是因为类Thread有多个构造函数。
答案 0 :(得分:3)
是的,等效,请信任您的IDE!
关于多个构造函数:
() -> { //implement }
是String
吗? -否->仅可以调用一个构造函数-> Runnable
的构造函数,您也可以自行调用。答案 1 :(得分:1)
是的,这是类似的事情。两种表示形式都将调用Thread(Runnable runnable)
构造函数。
您问题中的后续代码
() -> { //implement }
是其前面代码中 匿名类 的 lambda表示形式 :
new Runnable() {
@Override
public void run() {
//implement
}
}
答案 2 :(得分:0)
相似,但不完全相同。在所有常规情况下,其行为均相同。一些方法访问其堆栈(跟踪)。这些可能会产生不同的结果。
答案 3 :(得分:0)
是的,是一样的。您可以使用lambda表达式,因为接口Runnable具有Annotation @FunctionalInterface。