《Kotlin实战》-附录

news2024/11/9 6:22:29

附录

本部分内容只是简单列举下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.coloradmin.cn/o/2236411.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【信号处理】基于联合图像表示的深度学习卷积神经网络

Combined Signal Representations for Modulation Classification Using Deep Learning: Ambiguity Function, Constellation Diagram, and Eye Diagram 信号表示 Ambiguity Function(AF) 模糊函数描述了信号的两个维度(dimensions):延迟(delay)和多普勒(Doppler)。 …

【C++练习】两个实型数的加法运算

题目: 编写一个C程序,实现两个实型数的加法运算并输出结果。 要求: 定义一个函数 dadd,该函数接收两个 double 类型的参数,并返回它们的和。在 main 函数中,提示用户输入两个实型数(double 类…

【开源免费】基于SpringBoot+Vue.JS周边产品销售网站(JAVA毕业设计)

博主说明:本文项目编号 T 061 ,文末自助获取源码 \color{red}{T061,文末自助获取源码} T061,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析…

Sql面试题二:请查询出用户连续三天登录的所有数据记录

问题: 现有用户登录记录表,请查询出用户连续三天登录的所有数据记录 id dt 1 2024-04-25 1 2024-04-26 1 2024-04-27 1 2024-04-28 1 2024-04-30 1 2024-05-01 1 2024-05-02 1 2024-05-04 1 2024-05-05 2 2…

科研绘图系列:R语言分组堆积图(grouped stacked barplot)

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍加载R包准备画图主题数据链接导入数据画图数据准备图例图1图2合并图系统信息介绍 分组堆积图(Grouped Stacked Bar Chart)是一种数据可视化图表,它结合了分组柱状图和堆积柱状图…

世界技能竞赛大数据应用开发环境1:1还原

集群情况 模块A搭建环境,在容器中搭建大数据平台 Pc机,安装安装比赛需要软件 模块B中使用idea快速开发完成数据处理 模块E包含了接口数据,使用vs code快速搭建vue数据可视化

【网络协议大花园】应用层 http协议的使用小技巧,用好了都不用加班,效率翻两倍(下篇)

本篇会加入个人的所谓鱼式疯言 ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. 🤭🤭🤭可能说的不是那么严谨.但小编初心是能让更多人…

SpringBoot源码解析(一)

SpringBoot自动装配原理 SpringBootApplication注解 我们在使用SpringBoot时,通常使用的是SpringBootApplication这个注解,比如: 而这个注解的定义为下图,可以发现这个注解上有另外三个注解:SpringBootConfiguration…

流类库与输入输出

来源:《C语言程序设计》 像C语言一样,C语言也没有输入输出语句。 但C标准库中有一个面向对象的输入输出软件包,即I/O流类库。 流是I/O流类的中心概念。 ------ I/O流类库是C语言中I/O函数在面向对象的程序设计方法中的一个替换产品。 -…

k8s图形化显示(KRM)

在master节点 kubectl get po -n kube-system 这个命令会列出 kube-system 命名空间中的所有 Pod 的状态和相关信息,比如名称、状态、重启次数等。 systemctl status kubelet #查看kubelet状态 yum install git #下载git命令 git clone https://gitee.com/duk…

理解鸿蒙app 开发中的 context

是什么 Context是应用中对象的上下文,其提供了应用的一些基础信息,例如resourceManager(资源管理)、applicationInfo(当前应用信息)、dir(应用文件路径)、area(文件分区…

ML1:sklearn env

sklearn: 中文参考: https://scikit-learn.cn/stable/modules/linear_model.html#ordinary-least-squares https://scikit-learn.org.cn/view/4.html ——》为主,不懂地方参考上面中文以及下面英文 英文参考: https://scikit…

五分钟入门双拼!

‍这是从零开始学双拼的第一篇:概述 双拼的原理 如果你使用全拼,想要完整敲出一个字的读音,需要敲出这个字拼音的每个字母。 虽然简拼能简化一点步骤,但除非是很常见的成语、俗语,否则重码率很高,选词很…

基于STM32的智能充电桩:集成RTOS、MQTT与SQLite的先进管理系统设计思路

一、项目概述 随着电动车的普及,充电桩作为关键基础设施,其智能化、网络化管理显得尤为重要。本项目旨在基于STM32微控制器开发一款智能充电桩,能够实现高效的充电监控与管理。项目通过物联网技术,提供实时数据监测、远程管理、用…

毕业后如何查找获取文献

当我们毕业后就无法再使用自己学校的数据库资源了,如果需要查找文献该从哪里获取资源呢?下面这个方法很简单而且有效: 一、首先选对科研工具 文献党下载器,把大量数据库资源整合在一起,直接去文献来源数据库查找获取…

串口接收,不定长数据接收

###1.CUBE-MX配置串口 2.我采用串口中断接收,打开中断接口 3.时钟同样8倍频,1分频,使用内部时钟 打开串口中断 main() { __HAL_UART_ENABLE_IT(&huart1, UART_IT_IDLE); // 启用空闲中断__HAL_UART_ENABLE_IT(&huart1, UART_IT_R…

2024 高质量 Java 面试题集锦:高级 Java 工程师面试八股汇总

最近感慨面试难的人越来越多了,一方面是市场环境,更重要的一方面是企业对 Java 的人才要求越来越高了。 基本上这样感慨的分为两类人,第一,虽然挂着 3、5 年经验,但肚子里货少,也没啥拿得出手的项目&#x…

express 使用JWT认证

1、JWT的理解 JWT 的组成部分: 分别是 Header(头部)、Payload(有效荷载)、Signature(签名) 三者之间使用英文的"."分隔, Pyload 部分才是真正的用户信息,他是用户信息经过加密之后生成的字符串 Header 和 Signature 是 安全性相关的部分,只是为了保证 Tok…

linux将mysql加到systemctl命令中

linux中,想将mysql加到systemctl命令中,首先需要确定mysql的安装位置 在/etc/systemd/system目录下新建mysql.service vim /etc/systemd/system/mysql.service 复制如下内容:确保你自己的mysql路径是否正确 [Unit] DescriptionMySQL Server…

【Mac】安装 VMware Fusion Pro

VMware Fusion Pro 软件已经正式免费提供给个人用户使用! 1、下载 【官网】 下拉找到 VMware Fusion Pro Download 登陆账号 如果没有账号,点击右上角 LOGIN ,选择 REGISTER 注册信息除了邮箱外可随意填写 登陆时,Username为…