下面的 test() 方法中有 10 个方法, 你觉得哪些调用无法通过编译?
@FunctionalInterface
public interface Executor1 {
void execute(Runable1 command);
}
@FunctionalInterface
public interface Executor2 extends Executor{
void execute(Runnable command);
}
@FunctionalInterface
public interface Executor3 extends Executor2{
void execute(Runnable command);
}
public void setMy(Executor e){
}
public void setMy1(Executor1 e){
}
public void setMy2(Executor2 e){
}
@FunctionalInterface
public interface Runable1 extends Runnable{
}
@FunctionalInterface
public interface Runable2 extends Runable1{
}
public void test(){
setMy(Runnable::run);
setMy(Runable1::run);
setMy1(Runnable::run);
setMy1(Runable1::run);
setMy1(Runable2::run);
setMy2(Runnable::run);
setMy2(Runable1::run);
setMy2(new Executor3() {
@Override
public void execute(Runnable command) {
}
});
setMy2(new Executor() {
@Override
public void execute(Runnable command) {
}
});
setMy2(new Executor2() {
@Override
public void execute(Runnable command) {
}
});
}
}
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.