Kotlin最全语法学习——KotlinWithNotes项目

  本项目总结了 Kotlin 几乎全部的知识点,代码中有详尽的注释,用以帮助理解。本人主要参考了 Kotlin 语言中文站Kotlin 教程 | 菜鸟教程 中的代码示例。部分知识难点如:委托模式、注解、反射,通过查阅《Kotlin实战》进行了相关总结,欢迎大家一起研究学习。

项目地址:https://github.com/CelebrateG/KotlinWithNotes

掘金地址

kotlin委托的栗子

  委托是Kotlin中最独特和最强大的功能之一,下面是项目中的两个例子,
Example1:

/**
 * @Author CelebrateG
 * @Description 委托模式:操作的对象不用自己执行,而是把工作委托给另一个辅助对象
 * 类委托,kotlin 通过 by 关键字将接口实现委托给另一个对象
 */

interface AnotherInterface{
    val message: String
    fun printSomething()
    fun printMessage()
}

/**
 * 接口实现类
 * 即受委托的类
 */
class Impl(val x : Int) : AnotherInterface{
    override val message = "Impl: x = $x"

    override fun printMessage() {
        println("printMessage: $x")
    }

    override fun printSomething() {
        println("printSomething: $x")
    }
}

/**
 * by 关键字将接口的实现委托给了 i
 * 委托对象 i 为 Derived 的构造参数
 */
class Derived(i : Impl) : AnotherInterface by i

/**
 * 委托给 i 并重写了方法
 */
class Derived2(i : Impl) : AnotherInterface by i{
    //此处调用 i 实现的message属性
    override fun printMessage() {
        println("Derived2.printMessage $message")
    }

}

/**
 * 测试方法
 */
fun testFun(){
    val i = Impl(10)
    Derived(i).printSomething()
    Derived2(i).printMessage()
    println(Derived2(i).message)
}

fun main(args:Array<String>){
    testFun()
}

Example2:

/**
 * @Author CelebrateG
 * @Description 委托属性
 * @Date  2018/10/26
 */

/**
 * 通过 by 关键字编译器会自动生成一个辅助属性 val delegate = Delegate()
 * p 的访问都会调用对应 delegate 的 getValue 和 setValue 方法
 */
class Example {
    var p: String by Delegate()
}

/**
 * 属性的委托不必实现任何的接口,
 * 但是需要提供一个 getValue() 函数
 * (与 setValue()函数——对于 var 属性)
 * 即将访问器的逻辑委托给一个辅助对象
 * 两函数都需要用 operator 关键字来进行标记
 */
class Delegate{
    /**
     * thisRef 必须与属性所有者类型(对于扩展属性——指被扩展的类型)相同
     * 或者是它的超类型(可以理解为接受属性的实例)
     * property 必须是类型 KProperty<*> 或其超类型(可以理解为属性本身)
     * 函数必须返回与属性相同的类型(或其子类型)
     */
    operator fun getValue(thisRef : Any?,property : KProperty<*>):String{
        return "thisRef:$thisRef ,property:'${property.name}'"
    }

    /**
     * thisRef,property同上
     * value 必须与属性同类型或者是它的超类型
     */
    operator fun setValue(thisRef : Any?,property : KProperty<*>,value : String){
        println("value:${value.toString()},property:'${property.name}',thisRef:${thisRef.toString()}")
    }

}


/**
 * 自 Kotlin 1.1 起也可以在函数
 * 或代码块中声明一个委托属性
 */
fun aFun(){
    var name : String by Delegate()
    name = "aFun"
    println(name)
}

包结构:

  基本按照 Kotlin 语言中文站目录划分,建议可以先从 grammer 目录基本语法开始看起。

image

项目中的依赖:

implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
androidTestImplementation "org.jetbrains.kotlin:kotlin-test:$kotlin_version"
implementation 'org.jetbrains.exposed:exposed:0.11.2'

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,335评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,895评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,766评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,918评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,042评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,169评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,219评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,976评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,393评论 1 304
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,711评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,876评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,562评论 4 336
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,193评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,903评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,142评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,699评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,764评论 2 351

推荐阅读更多精彩内容