You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何这段Java代码无输出?方法引用与Runnable调用问题咨询

Java代码无输出问题解析

你的代码核心问题是方法引用的使用逻辑错误:

  • Runnable r = Test ::print这段代码,相当于创建了一个特殊的Runnable对象——它的run()方法只会调用Test.print(),但print()本身只是返回一个新的Runnable实例,并不会执行这个实例的run()方法。简单说就是:你拿到了要执行的任务,但没真正启动它,自然没有输出。
  • IntelliJ的提示有点误导,实际上print()方法是被调用了,但它返回的Runnable没被执行,所以看不到结果。

修正方案

方案一:直接调用print()获取Runnable并执行

这是最直观的修正方式,直接拿到print()返回的任务并运行:

public class Test {
    public static Runnable print() {
        return () -> System.out.println("Hello world!!!");
    }
    public static void main(String[] args) {       
        Runnable r = Test.print();
        r.run();
    }
}

方案二:调整方法引用逻辑(不推荐,略显冗余)

如果一定要用方法引用,可以直接引用返回的Runnable的run()方法:

public static void main(String[] args) {       
    Runnable r = Test.print()::run;
    r.run();
}

方案三:重构print方法(更符合Runnable场景)

如果你的需求就是让print的逻辑作为Runnable执行,不如直接把print改成无返回值的方法,这样方法引用就能直接生效:

public class Test {
    public static void print() {
        System.out.println("Hello world!!!");
    }
    public static void main(String[] args) {       
        Runnable r = Test::print;
        r.run();
    }
}

内容的提问来源于stack exchange,提问作者ovod

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 21:06:10