什么是kotlin?kotlin是静态类型的编程语言,运行于jvm之上。如果在编译时知道变量的类型,则语言是静态类型的,在运行时知道变量类型,则语言是动态类型。什么是extension(扩展)函数Kotlin可以对一个类的属性和方法进行扩展,对被扩展的类代码本身不会造成任何影响。扩展函数可以为已经存在的类添加新的方法,并且不会修改原来的类。classMainActivity:AppCompatActivity(){overridefunonCreate(savedInstanceState:Bundle?){super.onCreate(savedInstanceState)setConten
这个问题在这里已经有了答案:Swift:ConvertenumvaluetoString?(19个回答)关闭7年前。假设我有一个这样的枚举:enumDirection{caseLeftcaseRight}有没有一种方法可以自动导出枚举的字符串描述而无需自己定义?像这样:letdirection:Direction=.Leftletdescription:String=direction.description//shouldbe"Left"我尝试了reflect(direction)和MirrorType上的属性,但没有用。
前言协程系列文章:一个小故事讲明白进程、线程、Kotlin协程到底啥关系?少年,你可知Kotlin协程最初的样子?讲真,Kotlin协程的挂起/恢复没那么神秘(故事篇)讲真,Kotlin协程的挂起/恢复没那么神秘(原理篇)Kotlin协程调度切换线程是时候解开真相了Kotlin协程之线程池探索之旅(与Java线程池PK)Kotlin协程之取消与异常处理探索之旅(上)Kotlin协程之取消与异常处理探索之旅(下)来,跟我一起撸KotlinrunBlocking/launch/join/async/delay原理&使用我们知道线程可以被终止,线程里可以抛出异常,类似的协程也会遇到此种情况。本篇将从
Kotlin是什么Kotlin是一门运行在JVM之上的语言。它由Jetbrains创建,而Jetbrains则是诸多强大的工具(如知名的JavaIDEIntelliJIDEA)背后的公司。Kotlin是一门非常简单的语言,其主要目标之一就是提供强大语言的同时又保持简单且精简的语法。kotlin特性其主要特性如下所示:轻量级:这一点对于Android来说非常重要。项目所需要的库应该尽可能的小。Android对于方法数量有严格的限制,Kotlin只额外增加了大约6000个方法。互操作:Kotlin可与Java语言无缝通信。这意味着我们可以在Kotlin代码中使用任何已有的Java库;因此,即便这门
Kotlin.Java的单例在Kotlin的5种实现1.饿汉式2.懒汉式3.线程安全的懒汉式4.双重校验锁式静态内部类式1.饿汉式JavapublicclassSingleton{privatestaticSingletoninstance=newSingleton();privateSingleton(){}publicstaticSingletongetInstance(){returninstance;}}KotlinobjectSingleton{}2.懒汉式JavapublicclassSingleton{privatestaticSingletoninstance;privateS
前言协程系列文章:一个小故事讲明白进程、线程、Kotlin协程到底啥关系?少年,你可知Kotlin协程最初的样子?讲真,Kotlin协程的挂起/恢复没那么神秘(故事篇)讲真,Kotlin协程的挂起/恢复没那么神秘(原理篇)Kotlin协程调度切换线程是时候解开真相了Kotlin协程之线程池探索之旅(与Java线程池PK)Kotlin协程之取消与异常处理探索之旅(上)Kotlin协程之取消与异常处理探索之旅(下)来,跟我一起撸KotlinrunBlocking/launch/join/async/delay原理&使用上篇文章分析了协程切换到主线程执行的详细流程,本篇将分析如何切换到子线程执行。通
简介在Android项目中经常要对Bean进行Parcelable序列化,也有很多序列化工具。Android中提倡通过实现Parcelable来对对象序列化,但是如果是使用Java开发实现起来就比较繁琐,而Kotlin提供了@Parcelize,可以轻松实现对Bean的序列化及反序列话。先看看官方对@Parcelize的解析:/***InstructstheKotlincompilertogenerate`writeToParcel()`,`describeContents()`[android.os.Parcelable]methods,*aswellasa`CREATOR`factoryc
什么是流?从流的方向来观察,我们称原始数据为上流,对数据进行一系列处理后,最终的数据为下流。从流的属性来观察,我们认为生产者在上流生产数据,消费者在下流消费数据。为什么引进Flow?Flow是Kotlin官方基于协程构建的用于响应式编程的API。响应式编程简单来说就是使用异步数据流进行编程。协程中,使用挂起函数仅可以异步返回单个值,而Flow则可以异步返回多个值,并补全kotlin语言中响应式编程的空白。Flow常见的操作生产者消费者例子suspendfuncollect(){flow{//发射数据emit(5)}.collect{//消费者Log.i("minfo","value=$it")
Kotlin学习笔记艰难地来到了第五篇~在这一篇主要会说Flow的基本知识和实例。由于Flow内容较多,所以会分几个小节来讲解,这是第一小节,文章后面会结合一个实例介绍Flow在实际开发中的应用。首先回想一下,在协程中处理某个操作,我们只能返回单个结果;而Flow可以按顺序返回多个结果,在官方文档中,Flow被翻译为数据流,这也说明了Flow适用于多值返回的场景。Flow是以协程为基础构建的,所以它可通过异步的方式处理一组数据,所要处理的数据类型必须相同,比如:Flow是处理整型数据的数据流。Flow一般包含三个部分:1)提供方:负责生成数据并添加到Flow中,得益于协程,Flow可以异步生成
前言协程系列文章:一个小故事讲明白进程、线程、Kotlin协程到底啥关系?少年,你可知Kotlin协程最初的样子?讲真,Kotlin协程的挂起/恢复没那么神秘(故事篇)讲真,Kotlin协程的挂起/恢复没那么神秘(原理篇)Kotlin协程调度切换线程是时候解开真相了Kotlin协程之线程池探索之旅(与Java线程池PK)Kotlin协程之取消与异常处理探索之旅(上)Kotlin协程之取消与异常处理探索之旅(下)来,跟我一起撸KotlinrunBlocking/launch/join/async/delay原理&使用之前一些列的文章重点在于分析协程本质原理,了解了协程的内核再来看其它衍生的知识就