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

Kotlin方法的Int类型参数是否可修改?校验通过为何仍下标越界

问题1:Int类型的参数值可以被修改吗?

不可以。
Kotlin中所有函数的参数默认都是只读的val,且Int属于基础值类型,采用值传递的方式传入函数,函数内部仅能读取参数的值,无法修改外部传入的原始变量,不用担心funA内部修改params的值导致后续逻辑异常。

问题2:为什么会出现params为-1进入funB的情况?

核心原因是你funA的实现存在分支返回逻辑缺失:
你当前的funA代码仅在params < 0的分支返回了false,params >= 0的分支没有显式声明返回值:

fun funA(params:Int): Boolean {
    if (params < 0) {
        return false
    }
    // 此处缺少返回值,属于Kotlin标准编译规则下的编译错误
}

如果由于编译配置放宽、代码漏写return true、重写方法时签名不匹配导致实际执行的不是你写的这个funA实现等异常场景,会出现**params = -1时funA未按预期返回false,反而返回了true**的问题,导致onTrigger里的拦截逻辑if (!funA(params)) return失效,-1的参数直接流入funB,访问数组下标触发越界崩溃。

修复方案

补全funA的返回逻辑即可:

override fun funA(params:Int): Boolean {
    if (params < 0) {
        return false
    }
    return true
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 08:15:04