![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
kotlin
文章平均质量分 94
TechMerger
Android平台资深从业者,公众号「Tech Merger」。
展开
-
如何优雅地单元测试 Kotlin/Java 中的 private 方法?
翻译自首先,开发者应该测试代码里的 private 私有方法吗?直接信任这些私有方法,测试到调用它们的公开方法感觉就够了吧。对于这个争论,每个开发者都会有自己的观点。但回到开头的问题本身,到底有没有一种合适的途径来?截止到目前,在面对单元测试私有方法的问题时,一般有如下几种选择:不去测试私有方法 😜*(选择信任,直接躺平)*将目标方法临时改成 public 公开访问权限 😒(可我不愿意这样做,这不符合代码规范。作为一名开发者,我要遵循最佳实践。原创 2023-10-30 13:28:06 · 1732 阅读 · 0 评论 -
不用休眠的 Kotlin 并发:深入对比 delay() 和 sleep()
毫无疑问,Kotlin 语言中的协程 Coroutine 极大地帮助了开发者更加容易地处理异步编程。该特性中封装的诸多高效 API,可以确保开发者花费更小的精力去完成并发任务。一般来说,开发者了解一下如何使用这些 API 就足够了!可就 JVM 的角度而言,协程一定程度上减少了*“回调地狱”*的问题,切实地改进了异步处理的编码方式。相信包括笔者在内的很多开发者常常会好奇。所以,本文将以delay()为切入点,带开发者剖析下协程的背后原理。原创 2023-10-09 12:00:00 · 1566 阅读 · 0 评论 -
Flow 转 LiveData 后数据丢了,肿么回事?
最近我在负责一段代码库,需要在使用Flow的 Data 层和仍然依赖LiveData暴露 State 数据的 UI 层之间实现桥接。好在框架已经提供了一个叫做的方法,可以让你毫不费力地将Flow转为LiveData。在拥有一个及以上活跃的观察者的条件下,它才会发射数据。假使上游的 flow 产生了更新,但对应的 LiveData 并非活跃的状态,那么它将无法获得最新的数值。让我通过如下的实例,向你展示我们可能会遇到的这种潜在问题。请时刻记住采用方法转换Flow得到的LiveData。原创 2023-01-08 20:01:08 · 499 阅读 · 0 评论 -
从 internal 修饰符一探 kotlin 的可见性控制
之前探讨过的和存在module的限制,但其主要用于密封 class 的扩展和 interface 的实现。如果没有这个需求只需要限制 module 的话,使用 Kotlin 中独特的internal修饰符即可。本文将详细阐述 internal 修饰符的特点、原理以及 Java 调用的失效问题,并以此为切入点网罗 Kotlin 中所有修饰符,同时与 Java 修饰符进行对比以加深理解。internal 修饰符open 修饰符default、private 等修饰符针对扩展函数的访问控制。原创 2022-11-13 18:20:56 · 2042 阅读 · 0 评论 -
深入学习 Kotlin 特色之 Sealed Class 和 Interface
sealed class 以及 1.5 里新增的 sealed interface 可谓是 Kotlin 语言的一大特色,其在类型判断、扩展和实现的限制场景里非常好用。本文将从特点、场景和原理等角度综合分析 sealed 语法。每个 enum 常量只能以单例的形式存在sealed class 子类可以拥有多个实例,不受限制,每个均可以拥有自己的状态enum class 不能扩展自 sealed class 以及其他任何 Class,但他们可以实现 sealed 等 interface。原创 2022-10-30 09:27:56 · 716 阅读 · 0 评论 -
一文吃透 Kotlin 中眼花缭乱的函数家族...
函数在 Kotlin 语法中极为重要,了解其特点和原理对于灵活编程非常必要,再次回顾下各函数的异同及原理。函数特点原理lambda 表达式花括号内的函数体,更加简洁、便捷通过 Kotlin 中预设的Function1接口实现匿名函数定义没有名称的函数引用,供高阶函数使用同上高阶函数接收函数参数或返回函数引用接收或返回Function1接口实例扩展函数给目标类添加函数或属性生成XXXKt类添加静态函数,参数包括目标实例和其他参数内联函数。原创 2022-10-07 12:54:26 · 659 阅读 · 0 评论 -
能说一说 Kotlin 中 lateinit 和 lazy 的区别吗?
使用Kotlin进行开发,对于latelinit和lazy肯定不陌生。但其原理上的区别,可能鲜少了解过,借着本篇文章普及下这方面的知识。原创 2022-07-24 09:50:24 · 1444 阅读 · 0 评论