
Kotlin语言
向小凯同学学习
余生向小凯同学学习,做个暖男!
展开
-
Kotlin注解处理器
一、如果想要在Kotlin中使用注解处理器,第一步首先要编辑build.gradle 二、点击Gradle中,Tasks中的build,编译项目 三、就会根据需要生产对应目录的源码似的文件 四、好啦,结束了...原创 2018-04-07 14:04:18 · 913 阅读 · 0 评论 -
Kotlin详尽语法分析(未完待续)
待续 一、Kotlin友好的语法 Kotlin不是诞生于学术界的一些不可思议难以理解的语法,它的语法类似于很多面向对象的语法,并且非常易于理解。 但是它又与传统的面向对象的Java有些区别,例如kotlin的val、var变量的声明。 例如:二、相似友好的语法/** * @author:wangdong * @description:Foo demo */class Foo...原创 2018-03-28 20:41:39 · 257 阅读 · 0 评论 -
使用IntelliJ IDEA创建Kotlin项目
一、kotlin被谷歌看中后,开始了突飞猛进的进步 下面来看一下维基百科关于Kotlin的介绍 简介: Kotlin是一种在Java虚拟机上运行的静态类型编程语言,它也可以被编译成为JavaScript源代码。它主要是由俄罗斯圣彼得堡的JetBrains开发团队所发展出来的编程语言,其名称来自于圣彼得堡附近的科特林岛。[3]2012年1月,著名期刊《Dr. Dobb’s Journal》中K...原创 2018-03-28 18:51:21 · 12777 阅读 · 0 评论 -
Kotlin协程案例:序列生成器
一、使用Kotlin协程,写一个斐波拉契序列package cn.kotliner.coroutine.sequenceimport kotlin.coroutines.experimental.buildSequence/** * @author:wangdong * @description: */fun main(args: Array<String>)...原创 2018-04-03 17:34:40 · 574 阅读 · 0 评论 -
Kotlin协程(同步、异步和常用的API)
一、什么是协程 1.协作程序,解决异步问题 2.应用层完成调度二、协程要解决的问题 1.看下伪代码现在开始我们要运行协程啦{ //现在我们在协程里面 //花括号内的代码可以是一段运行在UI线程的代码,比如Android初始化UI val 视图 = ...//初始化视图 //注意 图片 = 异步加载图片(图片的地址) 视图.显示图片(图片)...原创 2018-04-03 16:24:11 · 6030 阅读 · 0 评论 -
Kotlin领域特定语言(DSL)
一、DSL的概念 只在特定领域内使用的语言 例如: —HTML、Gradle、SQL等等特点: 计算机编程语言 具有语言的表达能力 有限的表达能力 关注某个特定的领域二、下面用DSL来写一个例子吧 需要下面五个类: 三、创建一个Node节点的接口package cn.kotliner.kotlin/** * @author:wangdong * @de...原创 2018-04-03 13:57:15 · 718 阅读 · 0 评论 -
kotlin高阶函数开发一个程序,统计文本中字符串出现的个数
一、高阶函数是Kotlin的核心部分,下面来使用下高阶函数写一个程序注意:我这里的File使用的是:与src同级的文件,你可以根据自己的需要,修改文件地址 代码实例package net.println.kotlin.chapter5.exampleimport jdk.nashorn.internal.objects.NativeArray.mapimport java.io...原创 2018-04-03 11:10:31 · 794 阅读 · 0 评论 -
Kotlin偏函数
一、通过偏函数与柯里化函数的结合,来聊一聊偏函数到底是什么,怎么实现 看一个例子,main方法中就是偏函数的调用package net.println.kotlin.chapter5.curryingimport java.io.OutputStreamimport java.nio.charset.Charset/** * @author:wangdong * @descri...原创 2018-04-03 10:39:53 · 988 阅读 · 4 评论 -
Kotlin柯里化——函数调用链
一、首先看一个小例子,做个铺垫package net.println.kotlin.chapter5.currying/** * @author:wangdong * @description:柯里化——函数调用链 *//**定义一个Hello的方法*///传入三个参数,返回一个Boolean类型的值fun hello(x: String,y: Int,z: Double...原创 2018-04-03 00:35:38 · 2747 阅读 · 0 评论 -
Kotlin 函数复合
一、函数复合的概念 f(g(x))二、看一些小例子package net.println.kotlin.chapter5.compose/** * @author:wangdong * @description: *//**定义两个函数*/val add5 = {i: Int -> i + 5} //加5val multiplyBy2 = {i: Int -&...原创 2018-04-03 00:34:59 · 728 阅读 · 0 评论 -
Kotlin闭包(支持函数式编程不再是梦想)
一、闭包 闭包目前非常火,因为闭包的出现,现在支持函数式编程就不再是梦想了。二、什么是闭包 1.函数的运行环境 2.持有函数运行状态 3.函数内部可以定义函数 4.函数内部也可以定义类三、来看一下小例子package net.println.kotlin.chapter5.closureimport java.util.*/** * @author:wangdo...原创 2018-04-03 00:34:15 · 1649 阅读 · 0 评论 -
Kotlin尾递归优化
一、尾递归优化 1.递归的一种特殊形式 2.调用自身后无其他的操作 3.tailrec关键字提示编译器尾递归优化二、具体的来看看一下代码说明package net.println.kotlin.chapter5.tailrecursive/** * @author:wangdong * @description: *//**定义一个节点的list的集合*/data...原创 2018-04-03 00:33:19 · 1817 阅读 · 0 评论 -
Kotlin常用的高阶函数(Filter、TakeWhile、Let、Apply、With......)
一、Filterpackage net.println.kotlin.chapter5.builtins/** * @author:wangdong * @description:Kotlin常见的高阶函数 */fun main(args: Array<String>) { //求(0..6)的阶乘 (0..6).map(::factorial)...原创 2018-04-03 00:32:40 · 2935 阅读 · 0 评论 -
Kotlin常用的高阶函数(ForEach、Map、Flatmap、Fold、Reduce......)
一、ForEach 类型于Java的传统的写法package net.println.kotlin.chapter5.builtins/** * @author:wangdong * @description:Kotlin常见的高阶函数 */fun main(args: Array<String>) { //定义一个list val list =...原创 2018-04-02 17:25:58 · 9057 阅读 · 0 评论 -
Kotlin高阶函数概念
一、高阶函数的基本概念 1.传入或者返回函数的函数(传入是函数,返回也是函数) 2.函数引用最常见的方式,”:: println” 3.带有接收者Receiver的引用pdfPrinter::println二、看一下入门的例子package net.println.kotlin.chapter5.basics/** * @author:wangdong * @descri...原创 2018-04-02 16:21:42 · 256 阅读 · 1 评论 -
Gradle添加依赖及使用注解(添加插件)
一、基于Gradle可以构建很多项目,下面以Kotlin项目为例package com.reflectionsimport sun.management.Agent/** * @author:wangdong * @description:反射 *//**定义一个person类*///通过poko注解生成无参构造的方法//@Noargclass Person(val...原创 2018-04-04 17:15:19 · 2706 阅读 · 0 评论 -
Kotlinx.coroutine框架获取和搭建
一、框架介绍 1.Kotlin官方协程应用框架 2.提供大量对协程API的封装二、主要模块 1.核心支持 2.Reactive支持 3.UI的支持 三、获取这个框架 1.谷歌搜素 2.点进GitHub中去,有多种方法可以获取 3.下面展示Git获取~/TestSpace ⌚ 17:55:20$ git clone https://github.c...原创 2018-04-04 17:16:10 · 393 阅读 · 0 评论 -
kotlin装箱和拆箱
一、首先来看一下Java中的装箱和拆箱package cn.kotliner.java.box;/** * Created by wangdong * 在Java中Integer是int的包装类 * 下面两个方法是重载的不同的两个方法 * 而在Kotlin中int和Integer合二为一成Int了' * 类型的还有Double等 */public interface BoxI...原创 2018-04-07 12:41:49 · 1478 阅读 · 1 评论 -
Kotlin和Java中的IO操作
Kotlin的特性 1.Kotlin提供了非常多,File、Stream、Reader、Writer的拓展方法 2.使用use拓展自动关闭资源 3.小文件一次性读写操作 一、首先来看看繁琐的JavaIO操作,来读取一个文件package cn.kotliner.java.io;import java.io.*;/** * Created by wangdong * Java...原创 2018-04-07 12:19:51 · 1336 阅读 · 0 评论 -
Kotlin集合框架分析
一、Kotlin中集合框架和Java集合框架特别相似 掌握以下例子就Ok了package cn.kotliner.kotlin.collections/** * Created by wangdong * 集合框架 * kotlin中集合的映射,最终都映射到Java中的list * kotlin中所有的list和map都是不可变的接口,如下不可以.add或者.remove * ...原创 2018-04-07 12:01:33 · 470 阅读 · 0 评论 -
Kotlin中正则表达式分析
一、首先来看一下Java中的正则表达式的写法package cn.kotliner.java.regex;import java.util.regex.Matcher;import java.util.regex.Pattern;/** * Created wangdong * 用正则表达式,从字符串中提取电话号码 */public class Main { pu...原创 2018-04-07 10:38:40 · 3202 阅读 · 0 评论 -
Kotlin和Java混合开发必读:基本的互操作
在使用Kotlin和Java混合开发的时候,涉及到一些基本的互操作 一、属性的读写 1.Kotlin自动识别Java的属性的Getter和Setter 2.Java操作kotlin属性可以通过Getter和Setter的方式二、空安全类型 1.Kotlin空安全类型的原理 空安全类型在Java中是没有的,在Kotlin中才有这个东西的。 Kotlin在编译的时候,会增加一个函数的调...原创 2018-04-05 21:31:28 · 4814 阅读 · 0 评论 -
Kotlin:Outdated Kotlin Runtime问题修复
一、今天在kotlin开发的时候,遇见了一个问题,在打开IDEA的时候,Kolin自动弹出来了一个 Outdated Kotlin Runtime框 二、内容是这样的Your version of Kotlin runtime in 'Gradle: org.jetbrains.kotlin:kotlin-stdlib:1.1.2-2' library is 1.1.2-2, wh...原创 2018-04-05 20:52:03 · 3183 阅读 · 0 评论 -
Kotlin使用泛型搭建一个MVP最简单实例
一、Kot对泛型能有很好的支持,下面的例子,是基于泛型搭建的一个Mvp,感兴趣的话,可以自己debug调试一下。import com.sun.xml.internal.rngom.parse.host.Baseimport java.lang.reflect.ParameterizedType/** * @author:wangdong * @description:泛型实现一个...原创 2018-04-05 20:34:55 · 901 阅读 · 0 评论 -
Kotlin的型变解析(协变、逆变和不变)
一、首先来看一个例子import java.util.*/** * @author:wangdong * @description:型变 */fun main(args: Array<String>) {}/** * 定义一个类,实现了List接口 * 协变out(返回值只读类型),逆变in(通常是写入的),可读可写就是不变了 */class My...原创 2018-04-05 17:26:10 · 1364 阅读 · 0 评论 -
Maven和Gradle如何添加依赖
一、首先来看看Maven项目怎么添加依赖 二、上图中红圈部分的pom.xml文件就是可以添加依赖的地方 例如这个……,一定要放到……里面 <!-- Compile --> <dependency> <groupId>org.springframework.boot</groupId>...原创 2018-04-05 16:17:15 · 41455 阅读 · 4 评论 -
Kotlin泛型强势分析
一、什么是泛型 1.泛化的类型或者说是类型的抽象 2.鸭子类型在静态语言中的一种近似实现二、泛型的实现机制 1.何为真泛型?(C#) 2.何为伪泛型?(Java,Kotlin)三、首先来看一下JAVA和Kotlin中的伪泛性 但是如果在C#语言中,他就是真泛型了,它不仅仅存在于编译期,也存在于运行期,它是没有任何问题的。四、在kotlin中定义泛型类和泛型方法pa...原创 2018-04-05 15:28:38 · 948 阅读 · 0 评论 -
Kotlin数据类型(三:基础数据类型转换)
一、不可隐式转换 在Java中从小到大,可以隐式转换,数据类型将自动提升。下面以int为例 这么写是ok的int a = 2312;long b = a;那么在Kotlin中//隐式转换,编译器会报错val anInt: Int = 5val ccLong: Long = anInt//需要去显式的转换,下面这个才是正确的val ddLong: Long = a...原创 2018-03-29 15:18:27 · 27633 阅读 · 0 评论 -
Kotlin数据类型(二:装箱和拆箱)
蛮多人很疑惑,在Kotlin中,数据类型的装箱和拆箱怎么整 一、先看下Java中的装箱和拆箱 例如:/** * @author:wangdong * @description: */public class HelloWorldJava { public static void main(String[] args){ int aInt = 5; ...原创 2018-03-29 14:40:42 · 773 阅读 · 0 评论 -
Kotlin数据类型(一:数据类型)
一、Boolean/** * Boolean类型有两种类型的 * true * flase */val a: Boolean = trueval b: Boolean = false二、Number数据类型package net.println.kotlin/** * @author:wangdong * @description: *//** *...原创 2018-03-29 14:21:45 · 1368 阅读 · 0 评论 -
使用IntelliJ IDEA创建基于Gradle的kotlin项目
一、首先打开Idea,选择Create New Project 二、选择Gradle项目并勾选 三、填写项目信息 四、然后一路默认下去就可以了 五、最终创建好的项目如下 六、写个HelloWorld ...原创 2018-03-29 11:19:58 · 7417 阅读 · 2 评论 -
Kotlin密封类
一、密封类非常简单package net.println.kotlin.chapter4import net.println.kotlin.chapter4.objects.Playerimport java.text.FieldPosition/** * @author:wangdong * @description:Sealed类的子类只能定义在它的类里面,或者与他在同一...原创 2018-04-02 15:39:46 · 226 阅读 · 0 评论 -
Kotlin中枚举
一、写一个Kotlin的枚举package net.println.kotlin.chapter4/** * @author:wangdong * @description: */enum class LogLevel{ VERBOSE,DEBUG,INFO,WARN,ERROR,ASSERT}二、看一下字节码 三、看一下kotlin反编译成Java的代码...原创 2018-04-02 15:25:44 · 1102 阅读 · 0 评论 -
Kotlin内部类
一、内部类: 定义在类内部的类 与类成员有相似的访问控制 kotlin 默认是静态内部类,非静态用inner关键字 this@outter,this@inner的用法二、匿名内部类 没有定义名字的内部类 类名编译时生产,类似Outter$1.class三、看一下Java中的内部类package net.println.kotlin.chapter4.innerClass...原创 2018-04-02 14:52:32 · 4382 阅读 · 0 评论 -
Kotlin表达式(中缀、分支、When)
1、中缀表达式 只有一个参数,且用infix修饰的函数 例如://书class Book{ //infix 自定义运算符的中缀表达式。本没有on,自定义一个,不需要类名.方法即可调用 //传入任意类型,返回一个Boolean类型的参数 infix fun on(any: Any): Boolean{ return true }}//...原创 2018-03-31 20:03:11 · 6689 阅读 · 0 评论 -
Kotlin运算符
一、在程序结构运算符主要有+-*/%^? 任何类都可以定义或者重载父类的基本运算符 通过运算符对应的具名函数来定义 对参数个数作要求,对参数和返回值类型不作要求 不能像Scala一样定义任意的运算符二、来写一些实例package net.println.kotlin.chaptersimport javax.print.attribute.standard.MediaSize...原创 2018-03-31 18:54:48 · 1487 阅读 · 0 评论 -
Kotlin的类(成员方法、成员变量)
一、首先看一个简单类和方法的实现package net.println.kotlin.chapters/** * @author:wangdong * @description: *//**定义一个女生类*/class girl(var character: String, var appearance: String, var age: Int){ fun sin...原创 2018-03-31 12:28:36 · 7347 阅读 · 0 评论 -
Kotlin跨平台工程的构建
一、Kotlin官方已经提供了结合IDEA的跨平台工程的构建 打开IDEA,选择Kotlin 二、一路往下 三、构建完成后,如下图原创 2018-04-08 13:35:07 · 862 阅读 · 0 评论 -
Kotlin项目类找不到bug:java.lang.ClassNotFoundException: kotlin.reflect.Kotlin Reflect Internal Error
一、今天在创建了一个Kotlin+Spring的项目,结果启动报错org.springframework.context.ApplicationContextException: Unable to start web server; nested exception is org.springframework.boot.web.server.WebServerException: Un...原创 2018-04-08 12:09:08 · 11071 阅读 · 3 评论 -
Kotlin强势开发一个Android(安卓)程序
一、以IDEA为例,创建一个安卓应用 二、选择安卓,信息填一填 三、点击下一步 四、在Add an Activity to Mobile的时候选择一个基本的Activity(Basic Activity) 五、Next->Next 六、创建完成后,是这个样子 七、如果看到它依然是个Java工程 八、将它转成Kotlin工程(其实最新版本,一进去就是k...原创 2018-04-07 20:52:00 · 936 阅读 · 0 评论