Kotlin
文章平均质量分 50
Luckie stone
Android应用开发。
展开
-
Kotlin协程优秀博客
一文快速入门 Kotlin 协程_globalscope.launch-CSDN博客 Kotlin协程:协程的基础与使用_kotlin 协程_LeeDuo.的博客-CSDN博客再谈协程之Callback写出协程范儿 - 掘金ViewModel中的简易协程:viewModelScope - 知乎再谈协程之CoroutineContext我能玩一年 - 掘金再谈协程之suspend到底挂起了啥 - 掘金Kotlin | 关于协程异常处理,你想知道的都在这里硬核万字解读——Kotlin协程原理解析Kotlin代码原创 2023-11-28 09:04:54 · 525 阅读 · 0 评论 -
Kotlin代码独立编译运行
2、下载Kotlin编译器 kotlin-compiler-1.9.10.zip。3、新建Kotlin文件 hello.kt,添加Kotlin代码。4、打开CMD窗口。将路径切换到 hello.kt 所在的目录。解压缩后,将bin目录加入系统变量。原创 2023-09-01 09:58:46 · 464 阅读 · 0 评论 -
Kotlin
再谈协程之CoroutineContext我能玩一年 - 掘金再谈协程之suspend到底挂起了啥 - 掘金再谈协程之Callback写出协程范儿 - 掘金原创 2023-07-31 11:28:35 · 152 阅读 · 0 评论 -
学习Kotlin之泛型实化
接下来就是神奇的地方了,Intent接收的第二个参数本来应该是一个具体Activity的Class类型,但由于现在T已经是一个被实化的泛型了,因此这里我们可以直接传入T::class.java。然而不同的是,Kotlin提供了内联函数的概念,内联函数中的代码会在编译的时候自动被替换到调用它的地方,这样的话就不存在泛型类型擦除的问题了。bar()是一个带有泛型类型的内联函数,foo()函数调用了bar()函数,在代码编译之后,bar()函数中的代码将可以获得泛型的实际类型。首先,该函数必须是内联函数。...转载 2022-08-27 15:46:43 · 781 阅读 · 0 评论 -
Kotlin中的并发原语
本文译自:https://blog.egorand.me/concurrency-primitives-in-kotlin/我最近在阅读G. Blake Meike的“Android Concurrency一书”,到目前为止,我强烈推荐这本非常棒的书:它包含了很多洞察各种Android并发机制是如何的工作,何时使用这种方式而不是另一种方式,以及如何更好的使用各种工具。我决定遵循代码示例,在我的...转载 2019-06-17 06:44:15 · 1006 阅读 · 0 评论 -
Kotlin/Java中的反射详解
什么是反射反射是一种计算机处理方式。有程序可以访问、检测和修改它本身状态或行为的这种能力。能提供封装程序集、类型的对象。对于Java这种OOP语言来讲,运行状态中,我们可以根据“类的部分信息”来还原“类的全部信息”,这就是Java中的反射。Java虚拟机的体系结构Java虚拟机屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在...转载 2019-06-17 06:44:06 · 720 阅读 · 0 评论 -
带着你一步一步在Kotlin使用注解
背景知识:Kotlin中有以下四种元注解(用来定义注解的注解):@Target:限定注解标记的目标(属性、方法、类、扩展等等) @Retention:限定注解是否存储到字节码文件中;在运行时通过反射是否可见(默认情况下以上两个条件均为真) @Repeatable:允许在同一个元素上重复使用同一个注解 @MustBeDocumented:指定该注解是公有 API 的一部分,并且应该包...转载 2019-06-17 06:43:57 · 1062 阅读 · 1 评论 -
Kotlin 协程实现原理
前言在文章正式上干货之前,先说一点背景吧;我是 Kotlin 协程官方文档的译者,大家在 Kotlin 中文官网上看到的绝大多数协程的中文官方文档都是我翻译的。官方文档可以说是比较全面的介绍了协程的使用,但是就我的感觉来说,这些文档分布的比较散乱,甚至还有三篇分布在协程的官方 Github 的 project 中,很多协程的初学者对这些文档的阅读顺序也尝尝感到摸不到头脑。这里我将一共 15...转载 2019-06-07 09:47:38 · 12256 阅读 · 3 评论 -
浅谈Kotlin语法篇之lambda编译成字节码过程完全解析(七)
简述: 今天带来的是Kotlin浅谈系列第七弹,上篇博客我们聊到关于Kotlin中的lambda表达式的一些语法规则和基本使用。然而我们并没有聊到Kotlin的lambda表达式的本质是什么?我们都知道使用Kotlin来开发Android,最终都会编译成字节码文件.class,然后字节码文件run到JVM上,最后整个应用跑起来。1、为什么需要去对lambda表达式字节码分析?(why) 2、...转载 2019-04-20 12:18:47 · 429 阅读 · 1 评论 -
浅谈Kotlin语法篇之Lambda表达式完全解析(六)
简述: 今天带来的Kotlin浅谈系列的第六弹, 一起来聊下Kotlin中的lambda表达式。lambda表达式应该都不陌生,在Java8中引入的一个很重要的特性,将开发者从原来繁琐的语法中解放出来,可是很遗憾的是只有Java8版本才能使用。而Kotlin则弥补了这一问题,Kotlin中的lambda表达式与Java混合编程可以支持Java8以下的版本。那我们带着以下几个问题一起来看下Kotli...转载 2019-04-20 12:10:22 · 246 阅读 · 0 评论 -
浅谈Kotlin语法篇之扩展函数(五)
简述: 今天带来的是Kotlin浅谈系列的第五弹,这讲主要是讲利用Kotlin中的扩展函数特性让我们的代码变得更加简单和整洁。扩展函数是Kotlin语言中独有的新特性,利用它可以减少很多的样板代码,大大提高开发的效率;此外扩展函数的使用也是非常简单的。我会从以下几个方面阐述Kotlin中的扩展函数。1、为什么要使用Kotlin中的扩展函数? 2、怎么去使用扩展函数和扩展属性? 3、什么是扩...转载 2019-04-20 12:03:12 · 296 阅读 · 0 评论 -
浅谈Kotlin语法篇之顶层函数、中缀调用、解构声明(四)
简述: 今天带来的是Kotlin浅谈系列的第四弹,这次主要聊下Kotlin独有的新特性,Java不具备的。Kotlin是一种增加许多新功能的语言,允许编写更简洁易读的代码,这使得我们的代码更易于维护。例如使用顶层函数和属性从此消除Java中的static、中缀表达式调用和解构声明等。1、为什么要用顶层函数替代Java中的static函数 2、顶层函数和属性的基本使用 3、顶层函数实质原理...转载 2019-04-20 11:59:06 · 245 阅读 · 0 评论 -
浅谈Kotlin语法篇之如何让函数更好地调用(三)
简述: 今天带来的是Kotlin浅谈系列第三弹,这讲来聊下函数调用和函数重载问题,看到标题就知道Kotlin在函数调用方面有优于Java的地方。先抛出以下几个坑(估计曾经的你踩过...),看我们怎么去一步步填坑,从中你会体验Kotlin这门语言魅力。1、Java在函数调用方面存在怎样的坑? 2、Kotlin是怎样去解决函数调用的坑? 3、Java在函数重载方面存在怎样的坑? 4、Kotl...转载 2019-04-20 11:50:08 · 237 阅读 · 0 评论 -
浅谈Kotlin语法篇之变量和常量(二)
这次所说的是Kotlin的变量和常量,主要会对以下内容做介绍:1、变量基本定义 2、var和val的区别 3、智能类型推断 4、自定义属性访问器 5、var是可变的而val一定是不可变的吗一、Kotlin与Java中变量和常量 使用对比1、在Java中定义一个变量和常量public String name = "Mikyou";//定义变量public final int ...转载 2019-04-20 11:41:12 · 182 阅读 · 0 评论 -
浅谈Kotlin语法篇之基础语法(一)
Kotlin的基本语法的介绍,先从整体上体会kotlin的编程风格。一、包的声明在Kotlin中定义包与Java有点不同,在Kotlin中目录与包结构无需匹配,Kotlin的源码可以在磁盘上的任意位置。1、包的声明源文件的通常是以包的声明的开头和Java一样。package com.mikyou.hellokotlin/** * Created by mikyou...转载 2019-04-20 11:20:32 · 135 阅读 · 0 评论 -
Kotlin中用DSL代替建造者模式
原文:Kotlin-ifying a Builder Pattern原文地址:https://medium.com/google-developers/kotlin-ifying-a-builder-pattern-e5540c91bdbe原文作者:Doug Sigelbaum译者说Doug Sigelbaum是Google的Android工程师,在这篇文章中,作者讲述了如何...翻译 2019-06-17 06:44:23 · 951 阅读 · 0 评论 -
kotlin coroutines 协程教程(一)基本用法
kotlin coroutines 协程Coroutine 协程,是kotlin 上的一个轻量级的线程库,对比 java 的 Executor,主要有以下特点:更轻量级的 api 实现协程 async 和 await 不作为标准库的一部分 suspend 函数,也就是挂起函数是比 java future 和 promise 更安全并且更容易使用那么实际本质上和线程池有什么区别呢?我的理...转载 2019-06-17 06:44:36 · 1753 阅读 · 0 评论 -
Kotlin中@JvmOverloads 注解
含义:方法的重载,类似于在java中对多个构造函数、多个方法的重载可能还是云里雾里,直接上代码,代码解释一切:如果我们再kotlin中写如下代码:fun f(a: String, b: Int = 0, c: String="abc"){}相当于在Java中声明void f(String a, int b, String c){}默认参数没有起到任何作用。但是如...转载 2019-07-27 11:26:11 · 3394 阅读 · 1 评论 -
Kotlin中的object 与companion object的区别
一、 object关键字object 关键字可以表达两种含义:一种是对象表达式,另一种是 对象声明。1、对象表达式继承一个匿名对象val textView = findViewById<TextView>(R.id.tv)textView.setOnClickListener(object : OnClickListener { override f...转载 2019-07-27 11:24:02 · 1699 阅读 · 0 评论 -
Kotlin中常量和静态方法
常量Java中: class StaticDemoActivity { public static final String LOAN_TYPE = "loanType"; public static final String LOAN_TITLE = "loanTitle"; }Kotlin中: class StaticDe...转载 2019-07-27 11:21:26 · 657 阅读 · 0 评论 -
Kotlin学习-构造函数
Kotlin的构造函数分为主构造函数(primary constructor)和次级构造函数(secondary constructor);主构造函数1、在Kotlin中一个类可以有一个主构造函数和一个或多个次构造函数;如果不写构造函数会有一个默认空的构造函数// 关键字 类名 类头(参数、主构造函数){ 类体 }class MyTest{}var test =MyTest()...转载 2019-07-27 11:19:01 · 386 阅读 · 0 评论 -
Kotlin基础语法之 "=="和"==="的区别
总体来说kotlin中==比较的是数值是否相等, 而===比较的是两个对象的地址是否相等, 见如下代码: val a: Int = 999 val b: Int? = a val c: Int? = a println(b == c) //true println(b === c) //false这个和jav...转载 2019-07-02 06:36:47 · 228 阅读 · 0 评论 -
Kotlin极简教程:第5章 集合类
本章将介绍Kotlin标准库中的集合类,我们将了解到它是如何扩展的Java集合库,使得写代码更加简单容易。如果您熟悉Scala的集合库,您会发现Kotlin跟Scala集合类库的相似之处。5.1 集合类是什么5.1.2 集合类是一种数据结构在讲 Kotlin 的集合类之前,为了更加深刻理解为什么要有集合类,以及集合类到底是怎么一回事,让我们先来简单回顾一下编程的本质:数据结构 +...转载 2019-06-18 06:54:41 · 538 阅读 · 0 评论 -
深入理解 Kotlin coroutine (二)
这一篇我们基于前面的基础来了解一下 Kotlinx.coroutines 这个库的使用,如果大家对它的实现原理有兴趣,可以再读一读上一篇文章,我们也可以在后面继续写一些文章来给深入地大家介绍。1. 准备工作就像前面我们说到的,1.1 Beta 2 当中协程相关的基础库的包名都增加了 experimental,所以我们在选择 kotlinx.coroutines 的版本的时候也一定要对应好编...转载 2019-06-17 06:45:16 · 211 阅读 · 0 评论 -
深入理解 Kotlin Coroutine (一)
1. 什么是 CoroutineCoroutine 被翻译成了“协程”,意思就是要各个子任务协作运行的意思,所以大家一下就明白了它被创造出来是要解决异步问题的。我们写 Java 的程序员,对线程更熟悉一些。线程是比进程更小一级的运行单位,它的调度由操作系统来完成,所以我们只管 new Thread 和 start,至于什么时候 run,什么时候 run 完,我们都没办法预见。 Thr...转载 2019-06-17 06:45:06 · 1185 阅读 · 1 评论 -
Kotlin中协程的基本使用
1.协程的创建方式1.使用 launch()实例如下:GlobalScope.launch { delay(3000) }launch()函数的源代码如下:public fun CoroutineScope.launch( context: CoroutineContext = EmptyCoroutineContext, start:...转载 2019-06-17 06:44:59 · 3482 阅读 · 0 评论 -
kotlin coroutines 协程教程(三)launch原理
原理篇(二)CoroutineScope.launch{} 过程分析launch 的流程先贴上 launch 的源码:public fun CoroutineScope.launch( context: CoroutineContext = EmptyCoroutineContext, start: CoroutineStart = CoroutineStart.DEFA...转载 2019-06-17 06:44:51 · 1228 阅读 · 3 评论 -
kotlin coroutines 协程教程(二)关键类分析
原理篇(一)关键类的分析上面简单的介绍了一些用法,但是具体的原理和特点,好像还不是很清楚,那么下面就来介绍一下,一些关键的类,流程和原理。介绍的相关的原理基于这行代码: fun coroTest() { GlobalScope.launch { delay(1000L)//Delays coroutine for a given time ...转载 2019-06-17 06:44:43 · 414 阅读 · 0 评论 -
Kotlin中内联类(inline class)完全解析
翻译说明:原标题: An Introduction to Inline Classes in Kotlin原文地址:typealias.com/guides/intr…原文作者:Dave Leeds无论你是编写执行在云端的大规模数据流程程序还是低功耗手机运行的应用程序,大多数的开发者都希望他们的代码能够快速运行。现在,Kotlin的最新实验性的特性内联类允许创建我们想要的数据类...翻译 2019-04-19 07:04:56 · 906 阅读 · 1 评论 -
Kotlin中关于Companion Object的那些事
翻译说明:原标题: A few facts about Companion objects原文地址:https://blog.kotlin-academy.com/a-few-facts-about-companion-objects-37e18429b725](https://blog.kotlin-academy.com/a-few-facts-about-companion-obj...翻译 2019-04-19 06:54:53 · 5460 阅读 · 0 评论 -
掌握Kotlin中的标准库函数: run、with、let、also和apply
翻译说明:原标题: Mastering Kotlin standard functions: run, with, let, also and apply原文地址:https://medium.com/@elye.project/mastering-kotlin-standard-functions-run-with-let-also-and-apply-9cd334b0ef84原文...翻译 2019-04-19 06:51:58 · 209 阅读 · 0 评论 -
Effective Kotlin系列之遇到多个构造器参数要考虑使用构建器(二)
原标题: Effective Java in Kotlin, item 2: Consider a builder when faced with many constructor parameters原文地址: blog.kotlin-academy.com/effective-j…原文作者: Marcin Moskala这篇文章对Java程序员将会有很大的影响。当我们在处理各种各样...翻译 2019-04-21 05:14:02 · 319 阅读 · 0 评论 -
Effective Kotlin系列之考虑使用静态工厂方法替代构造器(一)
原标题: Effective Java in Kotlin, item 1: Consider static factory methods instead of constructors原文地址: blog.kotlin-academy.com/effective-j…原文作者: Marcin Moskala由Joshua Bloch撰写的Effective Java这本书是Java...翻译 2019-04-21 05:13:54 · 203 阅读 · 0 评论 -
Kotlin中是应该定义函数还是定义属性?
原标题: Kotlin: should I define Function or Property?原文地址: blog.kotlin-academy.com/kotlin-shou…原文作者: Igor Wojda最近,我对属性和函数用法方面感到困惑。这是一个很好的机会去介绍有关Kotlin属性的概念。那么问题来了,什么时候使用函数或者使用属性呢?我建议你遵循以下最简单的规则:属...转载 2019-04-21 05:13:42 · 134 阅读 · 0 评论 -
如何在你的Kotlin代码中移除所有的!!(非空断言)
翻译说明:原标题: How to remove all !! from your Kotlin code原文地址: android.jlelse.eu/how-to-remo…原文作者: David Vávra空安全特性是Kotlin语言最好语法特性之一。它让你在语言层面来考虑可空性,以致于你可以避免很多在Java中常见的隐藏空指针异常。然而当你通过工具自动将Java代码转化成Ko...翻译 2019-04-21 05:13:32 · 519 阅读 · 0 评论 -
教你如何攻克Kotlin中泛型型变的难点(实践篇)
简述: 这是泛型型变最后一篇文章了,也是泛型介绍的最后一篇文章。顺便再扯点别的,上周去北京参加了JetBrains 2018开发者日,主要是参加Kotlin专场。个人感觉收获还是挺多的,bennyHuo和彦伟老师精彩演讲确实传递很多干货啊,当然还有Hali布道师大佬带来了的Kotlin1.3版本的新特性以及Google中国技术推广负责人钟辉老师带来的Coroutines在Android开发中的应用...转载 2019-04-21 05:13:19 · 188 阅读 · 0 评论 -
教你如何攻克Kotlin中泛型型变的难点(下篇)
简述: 前几天我们一起为Kotlin中的泛型型变做了一个很好的铺垫,深入分析下类型和类,子类型和子类之间的关系、什么是子类型化关系以及型变存在的意义。那么今天将会讲点更刺激的东西,也就是Kotlin泛型型变中最为难理解的地方,那就是Kotlin中的协变、逆变、不变。虽然很难理解,但是有了上篇文章基础教你如何攻克Kotlin中泛型型变的难点(上篇)理解起来还是相对比较轻松。如果你是初学者不建议直接看...转载 2019-04-21 05:12:59 · 117 阅读 · 0 评论 -
教你如何攻克Kotlin中泛型型变的难点(上篇)
简述: Kotlin中泛型相关的文章也几乎接近尾声,但到后面也是泛型的难点和重点。相信有很多初学者对Kotlin中的泛型型变都是一知半解,比如我刚开始接触就是一脸懵逼,概念太多了,而且每个概念和后面都是相关的,只要前面有一个地方未理解后面的难点更是越来越看不懂。Kotlin的泛型比Java中的泛型多了一些新的概念,比如子类型化关系、逆变、协变、星投影的。个人认为学好Kotlin的泛型主要有这么几个...转载 2019-04-21 05:12:49 · 398 阅读 · 0 评论 -
Kotlin的独门秘籍Reified实化类型参数(下篇)
简述: 今天我们开始接着原创系列文章,首先说下为什么不把这篇作为翻译篇呢?我看了下作者的原文,里面讲到的,这篇博客都会有所涉及。这篇文章将会带你全部弄懂Kotlin泛型中的reified实化类型参数,包括它的基本使用、源码原理、以及使用场景。有了上篇文章的介绍,相信大家对kotlin的reified实化类型参数有了一定认识和了解。那么这篇文章将会更加完整地梳理Kotlin的reified实化类型参...转载 2019-04-21 05:12:40 · 428 阅读 · 0 评论 -
Kotlin的独门秘籍Reified实化类型参数(上篇)
翻译说明:原标题: Getting Real with Kotlin's Reified Type Parameters原文地址:typealias.com/guides/gett…原文作者:Dave Leeds历史背景:我们都知道Java中的泛型是在JDK1.5的版本引入的,可是集合Collection在JDK1.2版本中就引入的,我们现在所看到的List<T>...转载 2019-04-21 05:12:19 · 604 阅读 · 0 评论