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

调用静态方法是否必须通过类?子类直接调用父类静态方法解析

静态方法的简化调用场景与你的Java代码示例解析

直接回答你的问题:

  • 静态方法确实存在无需以Class.method()形式调用的场景;
  • 你代码里直接调用sleep()是完全合法的,和Thread.sleep()的执行效果完全一致。

为什么这种写法有效?

核心原因是你的ThreadNoJoin类继承自Thread类,而Thread.sleep()是一个静态方法。在Java语法规则中,当你在某个类(或它的子类)的内部调用该类的静态方法时,编译器会自动补全类名,等价于用类名.静态方法()的形式调用。

换句话说,你在run()方法里写的sleep(...),编译器会自动将其解析为Thread.sleep(...)——因为ThreadNoJoin继承了Thread,父类的静态方法可以被子类直接访问,省略类名的写法是语法允许的。

额外提醒:不推荐这种写法

虽然语法合法,但这种省略类名的写法可读性极差。静态方法属于类本身,而非实例对象,直接写sleep()很容易让其他开发者误以为这是一个实例方法(比如this.sleep()),但实际上Thread.sleep()的作用是让当前执行的线程休眠,和调用它的Thread实例没有任何关联(甚至用null调用该静态方法都能执行,只是不符合编码规范)。

所以最佳实践还是明确写出Thread.sleep(),让代码的意图更清晰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 07:26:59