当前位置: 首页 > article >正文

《Kotlin实战》-附录

附录

本部分内容只是简单列举下Kotlin应用以便指引进一步深入学习Kotlin。

附录A:构建Kotlin项目

本节只会记录下gradle的应用,其他需要时请自行搜索查看。

A.1 用Gradle构建Kotlin代码的项目

构建Kotlin项目的标准Gradle脚本如下:

buildscipt{
    ext.kotlin_version = "1.0.6"
    repositories{
        mavenCentral()
    }
    dependencies{
        classpath "org.jetbrains.kotlin:" + "kotlin-gradle-plugin:$kotlin_version"
    }
}

apply plugin:'java'
apply plugin:'kotlin'
repositories{
     mavenCentral()
}
 
dependencies{
     classpath "org.jetbrains.kotlin:" + "kotlin-gradle-plugin:$kotlin_version"
}

脚本在以下位置查找Kotlin源文件:

  • 代码源文件位置:src/main/java和src/main/kotlin
  • 测试源文件位置:src/test/java和src/test/kotlin

如果使用Kotlin反射,需要添加反射库:
compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"

A.1.1 用Gradle来构建Kotlin Android应用

Android应用和普通Java应用构建过程不同,需要添加
apply plugin:'kotlin-android'
而不是
apply plugin:'kotlin'

如果需要把Kotlin源代码放在特定目录下,如src/main/kotlin,则需要注册他们

android{
    ...
    sourceSets{
        main.java.srcDirs += 'src/main/kotlin'
    }
}
A.1.2 构建需要处理注解的项目

如果要在Kotlin使用时依赖注解处理,需要添加:
apply plugin: 'kotlin-kapt'

如果试图引入Kotlin到现有的一个使用注解处理的Java项目中,那么需要删除apt工具的现有配置。
Kotlin注解处理工具包含了Java和Kotlin类的处理,两个单独的注解处理工具是多余的。
可以使用kapt依赖配置来配置注解处理所需的依赖关系。
如下:

dependencies{
    compile 'com.google.dagger:dagger:2.4'
    kapt 'com.google.dagger:dagger-compiler:2.4'
}

如果对androidTest或test使用注解处理器,则对应的kapt配置应该分别为kaptAndroidTest和kaptTest。

A.2 使用Maven来构建Kotlin项目

A.3 用Ant来构建Kotlin项目

附录B:Kotlin代码的文档化
B.1 给Kotlin代码写文档注释

1.KDoc
为Kotlin声明编写文档注释的格式与Java类似,称为KDoc。
和JavaDoc一样,注释同样以/**开始,并使用@开头的标签来记录声明的特定部分。
两者的主要区别在于,KDoc用来写入注释的格式是Markdown而不是HTML。
KDoc还支持一些额外的约定来引入文档元素,例如函数的形参。
示例:

/**
* Calculates the sum of two numbers,[a] and [b]
*/
fun sum(a:Int,b:Int) = a + b

如上所示,把名称放入括号内,就是在注释中引入一个声明。
这种用法不仅用来记录函数参数,也可以用来引用其他声明。

2.注释中的标签
KDoc使用标签的语法与JavaDoc完全相同。
除了标准的JavaDoc标签以外,还支持额外的特有标签,例如:

  • @receiver:记录扩展函数或属性的接受者
  • @sample:用于将指定函数的文本包含在文档文本之中,作为使用正在记录的API的示例

KDoc不支持的一些JavaDoc标签:

  • @deprecated被替换为@Deprecated
  • @inheritdoc,Kotlin中文档注释始终通过覆盖声明自动继承。
  • @code、@literal和@link将替换为相应的Markdown格式

注意,Kotlin团队首选的文档样式是B.1所示的直接文档注释。
只有当参数或返回值具有复杂的语义并且需要从主要文档文本中分离时,才会使用标签。

B.2 生成API文档

Dokka是Kotlin的文档生成工具。其有以下特点:

  • 完全支持跨语言的Java/Kotlin项目,可以读取JavaDoc注释和KDoc注释,并生成覆盖模块的API文档。
  • 支持多种输入格式,包括纯HTML,JavaDoc风格的HTML和Markdown。

可以从命令行运行Dokka,或者把他作为构建脚本的一部分。
以Gradle构建脚本为例:

buildscript{
    ext.dokka_version = '0.9.13'
    repositories{
        jcenter()
    }
    dependencies{
        classpath "org.jetbrains.dokka:dokka-gradle-plugin:${dokka_version}"
    }
}

apply plugin 'org.jetbrains.dokka'

然后通过./gradlew dokka来为模块生成HTML格式的文档。
其他生成选项可以去查看Dokka文档。

附录C:Kotlin生态系统

Kotlin生态系统非常年轻,但已经非常完整。
在线资源集大成的地方:https://kotlin.link

需要提醒的是Kotlin和Java的生态系统完全兼容,在寻找解决问题过程中,不必只关注于Kotlin库。

C.1 测试

测试相关框架有:

  • Junit
  • TestNG
  • KotlinTest:灵感来自于ScalaTest,支持多种不同的编写测试样式。
  • Spek:Kotlin编写的BDD风格测试框架。
  • Hamkrest:更有表现力的断言DSL。
  • Mockito-Kotlin:提供了一套漂亮的用于mock的DSL。
C.2 依赖注入

相关框架有:

  • Spring
  • Guice
  • Dagger
  • Kodein:Kotlin编写,DSL来配置依赖
C.3 JSON序列化

相关框架有:

  • jackson-module-kotlin:深度Kotlin集成,支持数据类。
  • Kotson:为GSON提供了一套包装器。
  • Klaxon:轻量的纯Kotlin方案。
C.4 HTTP Clients

相关框架有:

  • Retrofit:REST风格,兼容性好。
  • OKHttp:更底层。
  • Fuel:纯Kotlin库。
C.5 Web应用

相关框架有:

  • Spring 5.0及以上版本原生支持Kotlin。
  • Spring Kotlin:支持Spring老版本。
  • vert.x
  • Ktor
  • Kara
  • Wasabi
C.6 访问数据库

相关框架有:

  • Hibernate:传统Java库
  • Exposed
C.7 工具和数据结构

相关框架有:

  • RxKotlin:响应式编程。
  • funKTionale:实现了各种函数式编程原语。
  • Kovenant:Kotlin和Android的promise实现。
C.8 桌面应用编程

相关框架有:

  • TornadoFx:用以适配JavaFX。

http://www.kler.cn/a/396520.html

相关文章:

  • cache中setID和index
  • 图像处理技术椒盐噪声
  • 【3D Slicer】的小白入门使用指南八
  • shell编程之变量与引用
  • 学习threejs,使用TWEEN插件实现动画
  • 医院信息化与智能化系统(21)
  • 大数据实验9:Spark安装和编程实践
  • Jackson与GSON的深度对比
  • mybatis-plus: mapper-locations: “classpath*:/mapper/**/*.xml“配置!!!解释
  • 初学人工智不理解的名词3
  • 释放高级功能:Nexusflows Athene-V2-Agent在工具使用和代理用例方面超越 GPT-4o
  • 从电动汽车到车载充电器:LM317LBDR2G 线性稳压器在汽车中的多场景应用
  • springboot实现简单的数据查询接口(无实体类)
  • Java项目实战II基于微信小程序的订餐系统(开发文档+数据库+源码)
  • 本机ip地址和网络ip地址一样吗
  • AI服务器SAS硬盘汰换与数据抹除指南
  • HarmonyOS ArkUI(基于ArkTS) 开发布局 (中)
  • 基于STM32智能电流表
  • Python酷库之旅-第三方库Pandas(218)
  • 探索 TraceBoard:统计你的键盘按键使用情况
  • android应用调用c语言的so库
  • 专业140+总分400+南京大学851信号与系统考研经验南大电子信息通信工程集成电路,真题,大纲,参考书。
  • 华为云前台用户可挂载数据盘和系统盘是怎么做到的?
  • 计算机组成原理对于学习嵌入式开发的意义
  • jmeter并发测试
  • 【已解决】 Tomcat10.1.x使用JSTL标签库