前置知识: Kotlin

内联类

00:00
1 min Advanced 2026/6/14

Kotlin内联类inline class避免装箱开销。

1. 基本用法

@JvmInline
value class UserId(val id: String)

@JvmInline
value class Meter(val value: Double)

2. 避免装箱

// 不用内联类:Int 装箱为 Integer
data class Wrapper(val value: Int)
val list = listOf(Wrapper(1), Wrapper(2))  // 每个都装箱

// 用内联类:编译为原始类型
@JvmInline
value class InlineWrapper(val value: Int)
val list2 = listOf(InlineWrapper(1), InlineWrapper(2))  // 无装箱

3. 类型安全

@JvmInline
value class UserId(val id: String)

@JvmInline
value class OrderId(val id: String)

fun getUser(id: UserId) { /* ... */ }

getUser(UserId("123"))  //
getUser(OrderId("123")) //  编译错误,类型不匹配

4. 限制

  • 必须有且仅有一个 val 属性
  • 不能有 init
  • 不能继承其他
  • 运行时可能退化底层类型泛型、可空时)

知识检测

学习进度

-- 已学文档
--% 知识覆盖率

学习推荐

专注模式