【发布时间】:2017-11-21 11:28:47
【问题描述】:
我知道使用 lambda 表达式调用单个 arg 构造函数的过程。但不确定如何使用附加参数(不是单个参数)调用构造函数。这可以通过使用匿名内部类来实现,如 "How to call a specific parent constructor from anonymous inner class?" 中所示。但我对使用 lambda 表达式更感兴趣。
例如:调用 Thread 类中的单 arg 构造函数,我可以这样做
Thread t1 = new Thread (() -> {
//do sometask
});
但我找不到类似的方法来调用 Thread(String name) 构造函数。
基本上我想用 lambda 做类似下面的事情
Thread t2 = new Thread("Thread2") {
@Override
public void run() {
}
};
感谢您的帮助。谢谢。
【问题讨论】:
-
你的例子不清楚。它没有调用 Thread 的零参数构造函数 - 它调用具有单个 Runnable 参数的构造函数。为什么需要一个 lambda 表达式来调用 Thread(String name) 构造函数?
String不是功能接口。 -
您的示例正在调用公共线程(可运行目标),其中可运行是功能接口,因此,您可以在构造函数中使用 lambda。
-
@Eran - 很抱歉造成混乱,现在编辑问题
-
看来你真正想要的是两个参数的构造函数——
Thread t1 = new Thread(() -> { doSomeTask(); }, "Thread1")