Kotlin 速查:类名、可空类型与视图引用

255 字
1 分钟
Kotlin 速查:类名、可空类型与视图引用

摘要#

这份速查记录几个容易混淆的 Kotlin 语法点。? 表示类型允许为 null,并不会自动消除空指针;Android View 引用则优先使用 View Binding。

获取类名#

val simpleName = javaClass.simpleName
val qualifiedName = this::class.qualifiedName

simpleName 常用于日志标签;需要包名时使用 qualifiedName,但它的返回值是可空类型。

可空类型与安全调用#

var title: String? = null
val length = title?.length ?: 0
  • String? 允许保存 null。
  • ?. 仅在对象非空时访问成员。
  • ?: 在左侧为空时提供默认值。
  • !! 会在值为空时抛出异常,不应作为常规空值处理方案。

类型转换#

val button = view as? Button
button?.isEnabled = true

as? 转换失败时返回 null;as 转换失败会抛出 ClassCastException。如果使用 findViewById,让泛型表达目标类型:

val button = findViewById<Button>(R.id.send_button)

Android 中的推荐写法#

启用 View Binding 后,布局中的 View 通过生成的绑定类访问:

private lateinit var binding: ActivityMainBinding

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    binding = ActivityMainBinding.inflate(layoutInflater)
    setContentView(binding.root)
    binding.sendButton.setOnClickListener { sendMessage() }
}

参考#

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

Kotlin 速查:类名、可空类型与视图引用
https://blog.mintalix.com/posts/study-kotlin-about-1/
作者
Mint
发布于
2021-06-24
许可协议
CC BY-NC-SA 4.0

评论区

Profile Image of the Author
Mint
软件开发、工程实践与技术思考。
分类
标签