首页
/
行业洞察
/
正文
INDUSTRY INSIGHT · 深度
第118篇 const 与编译期常量:延迟初始化之外的第三个选择
📅 2026/10/9 0:26:37
✍️ 爱科研究院
👁 阅读 3,247
const val是 Kotlin 里最简单的一个关键字,也是最容易暴露"只用过、没理解"的点。面试里问"编译期常量是什么意思",能答"编译时直接替换、不进内存"是及格;能答清二进制兼容的坑才是高分——而那个坑在真实项目里造成过线上事故。先把结论放在前面:const val的值在编译期被内联进每个使用点,编译产物里不保留这个字段。由此推出一条关键结论:它不是二进制兼容的——一旦某个库里的const常量值发生变化,依赖方即使不重新编译,运行时拿到的也还是旧值(因为旧值已经内联进它的字节码了)。这与 Java 的static final恰好相反,是这一题最值得讲清楚的地方。机制背后的执行路径先看编译结果的差异。假设有这样一个常量:object ApiConfig { const val BASE_URL = "https://api.v1.com" val RUNTIME_URL = getUrlFromServer() // 非 const,是运行时初始化 }const val的处理流程是:编译器解析源码时求值(必须是编译期可确定的字面量或常量表达式),把字面量直接写进每个引用点的字节码常量池。字节码里没有ApiConfig.BASE_URL这个字段,
📌 标签:
工业官网
设计趋势
AI 建站
SEO
获取完整报告 →
RELATED ARTICLES
推荐阅读
2026/10/9 0:26:37
从零搭建AI日报整理机制:分类框架、信息源管理与撰写规范
2026/10/9 0:26:36
监控告警联动自动化测试:Prometheus+Alertmanager实战
2026/10/9 0:21:36
工业物联网网关选型:协议兼容为何比算力更重要
2026/10/9 2:41:45
TCP聊天室课设源码拆解:UDP实现与私聊功能避坑指南
2026/10/9 2:41:45
【TongWeb8】登录控制台失败 URL提示 MSG_FLAG=client.trusted.no
2026/10/9 2:41:45
KKPrinter远程共享失败?注册表4个关键参数修复指南
2026/10/9 2:41:45
Zeek 连接轮询机制 ConnPolling::watch 详解:基于回调的定时连接监控方案
2026/10/9 2:41:45
电机测试台架数据波动?机械平台才是隐藏的“背锅侠”
2026/10/9 2:36:45
自定义 robbyrussell 主题:打造高效 zsh 终端提示符
2026/10/9 0:01:35
RISC-V裸机启动全流程:从复位向量到main函数的七步实现
2026/10/9 0:01:35
Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南
2026/10/9 0:01:35
EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错
2026/10/8 5:02:14
Jev+Agent接管浏览器:browser-use实战与jev-ultrafast性能优化
2026/10/9 1:10:43
多智能体集群实战:DeepAgents编排、MCP与A2A协议及Skills体系
2026/10/7 14:02:03
hindsight:面向LLM应用的事后可观测性工程实践
2026/10/8 4:30:43
我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频
2026/10/8 2:46:15
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证
2026/10/8 4:32:33
2026 大模型集体涨价:用 Python 做企业 Token 成本测算与选型避坑(附配置)