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

Kotlin构造函数中传参方法的调用顺序是否有明确保证?

Kotlin构造函数参数中方法调用的执行顺序

好问题!咱们来明确一下你关心的这个Kotlin构造函数里方法调用顺序的问题:

结论先行

是的,checkConsistency()一定会始终先于extractNames()执行,这个顺序是Kotlin语言规范明确保证的,不是偶然行为。

具体原因

Kotlin对于函数(包括构造函数)的实参求值,遵循严格的从左到右顺序:

  • 当调用主构造函数this(...)时,Kotlin会先逐个计算所有实参的结果,计算顺序完全按照参数列表的左到右顺序来
  • 在你的二级构造函数里,第一个实参是sherifs = westerners.checkConsistency(),第二个是names = westerners.extractNames(),所以必然先执行checkConsistency(),完成它的逻辑(打印日志、校验列表、返回数值),之后才会执行extractNames()

验证你的代码

运行你提供的main函数,控制台的输出顺序一定会是:

Checking consistency
Extracting names
LawAndOrder(sherifs=2, names=[John Wayne, Limonádový Joe])

这也直观地证明了方法调用的顺序是确定的。

额外提示

如果你后续需要依赖这种顺序编写逻辑(比如extractNames()需要依赖checkConsistency()先完成合法性校验,避免处理非法数据),完全可以放心这么做——因为这是语言规范明确规定的行为,不会因为编译器版本或者环境变化而改变。

内容的提问来源于stack exchange,提问作者mpts.cz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:04:19