有谁能告诉我为什么不编译?
public class TestClass {
private boolean doThis = false;
protected void fooThat() {}
protected void fooThis() {}
public void execute() {
(doThis ? this::fooThis : this::fooThat).run();
}
}
答案 0 :(得分:7)
您的意图可能是
(doThis ? this::fooThis : (Runnable) (this::fooThat)).run();
Java无法单独从方法名称推断出?:
返回的类型。
我不确定这比
更好if (doThis)
fooThis();
else
fooThat();
答案 1 :(得分:5)
这样做的方法如下:
Runnable r = (doThis ? this::fooThis : this::fooThat);
r.run();
您的代码无法编译,因为:
run()
。