Java 大佬们 ,来来来做题了? 看看是否能够在心里直接做出来。 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jeesk
V2EX    Java

Java 大佬们 ,来来来做题了? 看看是否能够在心里直接做出来。

  •  
  •   jeesk 2024-10-07 01:49:07 +08:00 2788 次点击
    这是一个创建于 444 天前的主题,其中的信息可能已经有所发展或是发生改变。

    下面的 test() 方法中有 10 个方法, 你觉得哪些调用无法通过编译?

     @FunctionalInterface public interface Executor1 { void execute(Runable1 command); } @FunctionalInterface publi 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) { } }); } } 
    4 条回复    2024-10-07 14:22:53 +08:00
    ZZ74
        1
    ZZ74  
       2024-10-07 11:00:31 +08:00
    除了
    setMy2(new Executor2() {} 其他都过不了吧
    lux182
        2
    lux182  
       2024-10-07 11:41:40 +08:00
    大佬看到这 都会默默的叉掉...
    chendy
        3
    chendy  
       2024-10-07 13:52:08 +08:00
    完全做不出来
    复制粘贴进 IDE 看了一下报错,作为一个大部分时间只会用 IDE 把 lambda 换成方法引用的菜逼,我感觉这个问题过于深奥了
    spkingr
        4
    spkingr  
       2024-10-07 14:22:53 +08:00 via Android
    @ZZ74 是对的,楼主就是想看下方法引用怎么用,首先签名相同的接口在 lambda 中可以通用,类型自动识别,但不能用于具有多个相同签名接口的重载方法,从你下面的三个方法就看出来你的想法。
    上面的方法引用应该都不合理,因为你的方法都不是静态方法,那么方法引用必然有一个 this 对象上下文,你这貌似上下文对象都不对,没法执行,你还是想测试相同签名参数的写法吧。
    其实,IDEA 参数中 new 的匿名对象它能自动识别帮你转 lambda ,简单的 lambda 如果有对应的方法会自动识别帮你转方法引用,不需要担心这个。
    唯一需要自己搞的就是:函数式编程中传递的方法太长,单独写成一个方法,然后使用方法引用传入既简洁又能重用。
    大部分情况也还是直接干吧,有 IDEA 呢,再还有 copilot 。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1124 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 17:55 PVG 01:55 LAX 09:55 JFK 12:55
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86