第118篇 const 与编译期常量:延迟初始化之外的第三个选择
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这个字段,

相关新闻

text-to-cad实战:从自然语言到可加工CAD模型的完整技术路线与工具选型

text-to-cad实战:从自然语言到可加工CAD模型的完整技术路线与工具选型

我最早注意到 text-to-cad 这个概念,是看到有人用一句"生成一个带四个安装孔的长方形底板"这种描述,直接在几秒钟里拿到了一份能用的CAD模型。当时我的第一反应是:这不就是文生3D模型套了个工程外壳吗?但自己动手跑完整…

2026/10/9 0:24:44 阅读更多 →
OpenRig不是软件,而是本地AI代理的协议桥接实践

OpenRig不是软件,而是本地AI代理的协议桥接实践

1. OpenRig 是什么:一个被误读的开源项目名与真实技术定位OpenRig 这个名字在近期技术社区中频繁出现,但几乎所有的讨论都建立在一个根本性误解之上——它并非一个独立发布的、可直接下载安装的成熟软件产品,也不是某个新推出的AI代理框架或本…

2026/10/9 0:24:43 阅读更多 →
AI Agent技能设计核心:从提示词到技能封装的工程化实践

AI Agent技能设计核心:从提示词到技能封装的工程化实践

1. 技能设计的核心思路:先搞明白 Skills 解决的是什么问题如果你最近在折腾 AI Agent 或者大模型应用开发,大概率会在各种技术社区看到 "Skills" 这个高频词。刚开始接触的时候我也很懵,因为这个词在不同语境下含义完全不一样——有…

2026/10/9 0:24:43 阅读更多 →

最新新闻

Rails TIL:用 after_commit 回调确保记录真正提交后执行通知等副作用逻辑

Rails TIL:用 after_commit 回调确保记录真正提交后执行通知等副作用逻辑

文档教程知识库 【免费下载链接】til :memo: Today I Learned 项目地址: https://gitcode.com/gh_mirrors/ti/til 点击查看 免费下载 本篇技术指南围绕 Rails ActiveRecord 回调体系中的一个关键陷阱展开:当记录在事务(transaction&#xff…

2026/10/9 1:23:57 阅读更多 →
linux中如何后台运行一个命令并获取它的进程号

linux中如何后台运行一个命令并获取它的进程号

如果你只是想简单的后台挂起一个命令你可以在末尾加一个&,就可以了,如下 your_command & echo $!这种写法中,是依靠了&在shell中可以并行所有命令,或者说是立刻释放左侧命令对shell的控制权,从而让shell立…

2026/10/9 1:23:57 阅读更多 →
【数学】P9667 [ICPC2022 Jinan R] Tower|普及+

【数学】P9667 [ICPC2022 Jinan R] Tower|普及+

本文涉及知识点 数学 [ICPC2022 Jinan R] Tower 题面翻译 题目描述 庞教授搭了 nnn 座不同高度的塔。第 iii 座塔的高度是 aia _ {i}ai​。 寿教授不喜欢这些参差不齐的塔。他决定先去掉它们中的 mmm 座,然后执行以下操作中的一些(或不执行&#x…

2026/10/9 1:23:57 阅读更多 →
游戏引擎对象与资源解耦设计实战:稳快省三原则

游戏引擎对象与资源解耦设计实战:稳快省三原则

1. 这不是教科书,是引擎开发现场的“对象-资源”生死线你写完一个角色类,new 出来扔进场景,跑两帧就卡顿;美术塞进来的20482048贴图,加载时内存暴涨300MB,然后在低端机上直接OOM崩溃;策划改了十…

2026/10/9 1:23:56 阅读更多 →
我的另一端使用RS422,我使用usb转接485的转接器,结果我只能接入收的线,如果接入发的线,则接收的字节流出现错误,后来改成usb转接422的转接器,收发都正常了。

我的另一端使用RS422,我使用usb转接485的转接器,结果我只能接入收的线,如果接入发的线,则接收的字节流出现错误,后来改成usb转接422的转接器,收发都正常了。

你帮我重新描述下我的提问,我觉得用词不太好对端是 RS-422 四线全双工设备。我先用 USB 转 RS-485 连接,只接对端发送差分线时 PC 能正常接收;再把对端接收差分线也接上后,PC 接收数据就出错。改用 USB 转 RS-422 后收发正常。请问…

2026/10/9 1:23:56 阅读更多 →
Incus 安全加固指南:守护进程访问控制、容器隔离与网络防欺骗配置详解

Incus 安全加固指南:守护进程访问控制、容器隔离与网络防欺骗配置详解

后端虚拟化容器运行时 【免费下载链接】incus Powerful system container and virtual machine manager 项目地址: https://gitcode.com/gh_mirrors/inc/incus 点击查看 免费下载 导读 本文以 Incus 官方安全说明文档 doc/explanation/security.md 为骨架&#x…

2026/10/9 1:22:56 阅读更多 →

日新闻

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API这个话题,隔三差五就会在群里被翻出来讨论一次。上周还有个同事线上处理一个订单超时问题,排查到最后发现是ZonedDateTime序列化后时区丢了,用户在下单当天晚上看到的时间整整差了8个小时。这类问题几乎每个做Java开发的人都遇到过…

2026/10/9 0:00:49 阅读更多 →
EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

前几个月我手头有好几台机器需要互相访问:办公室台式机、家里 NAS、还有一台云主机。如果只是偶尔传个文件倒还好,问题是工作场景经常要在几处环境之间来回切换,每次都先登录跳板机再层层代理,实在折腾。我先后试过端口映射、自建…

2026/10/9 0:00:49 阅读更多 →
AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent 这个词在过去一年里被反复提及,但真正动手搭过一套能跑起来的 Agent 系统的人都知道,从"知道它是什么"到"让它稳定干活"之间隔着一整套工程决策。我前后参与过几个 Agent 项目的落地,从最初用现成框架拼装&…

2026/10/9 0:01:50 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:32 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:40 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 10:10:36 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 21:13:17 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 13:34:55 阅读更多 →