禹昂,携程机票移动端资深工程师,专注于 Kotlin 移动端跨平台领域,Kotlin 中文社区核心成员,图书《Kotlin 编程实践》译者。
Kotlin 作为后起之秀,站在巨人们的肩膀上是她得天独厚的优势,而这个巨人也包括—《Effective Java》(EJ),得益于这个巨人,Kotlin 到处散发着高效的味道,这篇文章让我们一起来领略下 Kotlin 的高效之道。
让我们从一个小例子开始,来看看 Kotlin 代码长什么样子。这个例子定义了一个 Person 类来表示“人”,创建一个“人”的集合,查找其中年纪最大的人,并打印结果。尽管这是非常小的一段代码,从中也可以看到 Kotlin 许多有趣的特性。
算了一下,上个版本1.6.1已经是半年前推出的了,而整个开源项目自2014年推出以来,我已经维护了有四年之久。这四年以来,我不断地完善着LitePal的代码,修复各种大家提出的bug,以及补充各式各样好用的新功能。而今天,时隔半年,LitePal终于迎来了一次大的版本更新,正式发布了2.0.0版本!
在开始之前,我们先回顾一下上篇文章中的员工-部门表的例子,这次我们的示例也是基于这两个表。下面是使用 Ktorm 定义的这两个表的结构:
陆陆续续几篇文章已经讲解了项目中 Kotlin 如何配置、简单语法、DataBinding 配置,接下来就要说到 Kotlin 中的 Dagger2 了。
在现代Android应用开发中,协程(Coroutine)已经成为一种不可或缺的技术。它不仅简化了异步编程,还提供了许多强大的工具和功能,可以在高阶场景中发挥出色的表现。本文将深入探讨Coroutine重要知识点,帮助开发者更好地利用Coroutine来构建高效的Android应用。
在《Spring Boot 与 Kotlin 使用JdbcTemplate连接MySQL》 中介绍了一种基本的数据访问方式,结合构建RESTful API和使用Thymeleaf模板引擎渲染Web视图的内容就已经可以完成App服务端和Web站点的开发任务了。
在近期完成的一系列 Modern Android Development (简称 MAD Skills) 的视频和文章中,我们重点关注了 Kotlin 和 Jetpack。我们介绍了多种不同的方法,让 Android 代码更具表现力、更简洁、更安全以及更易于使用 Kotlin 运行异步代码。
以下文章翻译自《Effective Kotlin: Best practices》 中的 Chapter3 - Item24 - Consider variance for generic types
以下文章翻译自《Effective Kotlin: Best practices》 中的 *Chapter 3 - Item24 -
作者 / 软件工程师 Ting-Yuan Huang 和产品经理 David Winer
📷 📷 Hello Coroutines World package coroutines.demo import kotlinx.coroutines.coroutineScope import kotlinx.coroutines.delay import kotlinx.coroutines.launch suspend fun main() = coroutineScope { launch { delay(1000) println("Kotlin Co
点击Android Studio Preference -> Plugins -> 搜索Kotlin Languages插件
Google 宣布 Kotlin 成为 Android 的官方语言,Kotlin 可以说是突然火了一波。其实不仅仅是 Android,在服务端开发的领域,Kotlin 也可以说是优势明显。由于其支持空安全、方法扩展、协程等众多的优良特性,以及与 Java 几乎完美的兼容性,选择 Kotlin 可以说是好处多多。
在 Java 中,最基本的结构就是两种,一个是数组,另外一个是模拟指针(引用),所有的数据结构都可以用这两个基本结构来构造的,HashMap也不例外。Hashmap实际上是一个数组和链表的结合体(在数据结构中,一般称之为“链表散列“),请看下图: [https://www.iteye.com/topic/539465]
人与人之间通过语言来交流沟通,互相协作。人与计算机之间怎样“交流沟通”呢?答案是编程语言。一门语言有词、短语、句子、文章等,对应到编程语言中就是关键字、标识符、表达式、源代码文件等。通常一门编程语言的基本构成如下图所示
Kotlin编程语言是一种现代语言,它简洁,安全,实用,同时专注于与Java代码的互操作性。它几乎可以在使用Java的所有地方使用:服务器端开发,Android应用程序等等。Kotlin与所有现有的Java框架100%兼容,并且具有良好的工具支持。它是一种实用的语言,具有非常低的学习曲线,可以被Java开发人员快速掌握。Kotlin代码不仅可以编译为JVM字节码,还可以编译为JavaScript和Native代码,本书主要针对 Kotlin / JVM。
我们都知道, Java 作为 门面向对象的语言,需要所有的代码都写作类的函数。大多数情况下,这种方式还能行得通。但事实上,几乎所有的大型项目,最终都有很多的代码并不能归属到任何 个类中。有时一个操作对应两个不同的类的对象,而且重要性相差无几。有时存在 个基本的对象,但你不想通过实例函数来添加操作,让它的 API 继续膨胀。结果就是,最终这些类将不包含任何的状态或者实例函数,而是仅仅作为一堆静态函数的容器。在 JDK 中, 最适合的例子应该就是 Collections了。看看你自己的代码,是不是也有一些类本身就以Util作为后缀命名。 在kotlin中,根本就不需要去创建这些无意义的类, 相反,可以把这些函数接放到代码文件的顶层,不用从属于任何的类。这些放在文件顶层的函数依然是包内的成员,如果你需要从包外访问它,则需要 import 但不再需要额外包一层。
首先在编写Service层代码前,我们应该首先要知道这一层到底时干什么的,这里摘取来自ITEYE一位博主的原话
很多人可能都不知道,或者是已经忘记这件事了,但是我自己承诺过要写的东西,我是不会忘记的。
这里还有一个语法糖,在使用Kotlin时,我们不需要像Java那样定义 get/set 方法,在调用对象的属性时也不需要调用get/set方法来使用属性。使用Kotlin时,我们是直接对属性进行赋值和读取,因为Kotlin会自动将赋值、读取语句转换成get/set方法,方便开发者使用。
类 本篇文章主要介绍类的继承,接口,复写,单例,以及object属性的介绍。继承Kotlin中的继承方式与Java类似,Java中所有对象都继承自,而Kotlin中所有对象均继承自。两者均不能多继承,只是表现形式不同,Kotlin继承使用冒号表示。想要复写某个方法,则也需要将方法标记为的才可以被复写。切记一个类想要被继承,必须用或关键字 声明。示例如下; 抽象类抽象类与这里与Java是一致的,通过关键字标记为抽象类,抽象类中抽象方法也用标记。有了则不再需要使用进行标注了。示例如下: 抽象类和抽象方法是默
对于 Room 框架 来说 , 使用 Java 语言 开发和使用 Kotlin 语言 开发 , 需要在 build.gradle 构建脚本 中进行不同的配置 , 主要有以下两个配置不同 :
今年五月份的 Google I/O 上,我们正式向全球宣布 Kotlin-first 的这一重要理念,Kotlin 将成为 Android 开发者的首选语言,十月份举办的 Android Dev Summit 2019 大会上,我们发布了使用 Kotlin API 开发的 Jetpack Compose 开发者预览版。
Kotlin 君和 Swift 君在一个团队一起开发已经很久了,由于平台的差异性,他们经常会进行一些技术上的交流(PK),《Kotlin vs. Swift漫谈》系列就是他们在互相切磋是的语录。内容会
一些初学者容易出现的错误,就是喜欢在DAO层进行逻辑的编写,其实DAO就是数据访问的缩写,它只进行数据的访问操作。
上一篇文章介绍了类对成员的声明方式与使用过程,从而初步了解了类的成员及其运用。不过早在《Kotlin入门(12)类的概貌与构造》中,提到MainActivity继承自AppCompatActivity,而Kotlin对于类继承的写法是“class MainActivity : AppCompatActivity() {}”,这跟Java对比有明显差异,那么Kotlin究竟是如何定义基类并由基类派生出子类呢?为廓清这些迷雾,本篇文章就对类继承的相关用法进行深入探讨。 博文《Kotlin入门(13)类成员的众生相》在演示类成员时多次重写了WildAnimal类,这下你兴冲冲地准备按照MainActivity的继承方式,从WildAnimal派生出一个子类Tiger,写好构造函数的两个输入参数,补上基类的完整声明,敲了以下代码不禁窃喜这么快就大功告成了:
2 . 测试 接口 + 抽象类 : HumanStudent 继承了抽象类 , 实现类接口 ;
作为一个用了两年 Kotlin 的人,最近越来越控制不住自己,于是乎各种 Java 代码都开始变成 Kt,于是,也就发现了更多好玩的东东~
代理可以帮助您将任务委托给其他对象,从而带来更佳的代码复用性,您可以从 我们之前的文章 了解到更多信息。Kotlin 不仅可以让您通过 by 关键字轻松实现代理,还在标准库中提供了像 lazy()、observable()、vetoable() 以及 notNull() 这样的内建代理。接下来就让我们开始了解这些内建代理的使用,以及其内部的实现原理。
与java类似的一种基于JVM虚拟机的语言,java其实也是一种解释型语言,生成的class文件供JVM解释,同时kotlin也是一样的kotlin就是为了解决java的各种痛点而产生的,利用kotlin可以大大减少开发过程中的代码量编写,有一套几乎可以杜绝空指针的机制,kotlin没有分号
本文将简要介绍如何在 Kotlin 和 Java 中生成没有横杠(-)的 UUID 字符串。只需要一行代码即可完成!
因为Any这个类只是给我们提供了equals、hashcode、toString三个方法,我们可以看看Any这个类的源码实现
博主在文章中提到Java中的受查异常和非受查异常之间的区别在JVM的世界中实际上并不存在。传统理念认为继承自java.lang.RuntimeException的异常是非受查异常,其他异常则是受查异常。然而,通过比较JVM字节码层面的代码表示,发现无论是受查异常还是非受查异常,在JVM字节码中并没有实质差别。此外,文章也讨论了Kotlin语言对于受查异常的规避,通过Kotlin编写的类似Java代码可以正常运行且不需要显式捕获异常。最后,文章提到Java中的受查异常机制存在争议,而Kotlin作为一种新的JVM语言,避免了这一问题。
和Java没有什么两样,Kotlin中,类的声明也使用class关键字,如果只是声明一个空类,Kotlin和Java没有任何区别,不过定义类的其他成员,区别就很大了。
Kotlin中所有的类都有一个公有的超类:Any,这是所有没有声明超类的类的默认父类。 class Example //隐式继承自Any Any!=Java.lang.Object。尤其,除了equals()、hashCode()和toString()三个方法外,没有任何成员。为了显式地声明超类,语法如下: open class Base(p:Int) class Derived(p:Int):Base(p) 如果类具有主构造器,则可以使用主构造器的参数(并且必须)初始化父类。 如果类没有主
Kotlin 自带了交互式编程命令行,即 REPL(Read-Eval-Print Loop 的简写,直译为 “读取-求值-输出”循环),尤其适合快速实验一些东西。 本文只讲关于 Kotlin REPL 的两条 tips:
不需要findviewbyid 最新版 AS build.gradle 中默认引入 apply plugin: 'kotlin-android-extensions' 所以在代码中直接引用布局中的id就可以使用非常方便简洁。 Anko Anko是一个扩展库,提供了很多的扩展方法,可以写布局、数据库、和activity跳转toast等的通用方法。真的超级方便! 继承 kotlin中子类继承父类,父类要标记为open否则编译器会报错。 设计模式 java写项目的时候我们使用MVP模式会使用RxJava,那么K
对于构造函数,Kotlin中类可有一个主构造函数 & 多个次构造函数,下面将详细说明。
内容来源:2018 年 6 月 28 日,饿了么资深Android工程师张涛在“droidcon上海2018安卓技术大会”进行《领略kotlin协程的力量》演讲分享。IT 大咖说(微信id:itdakashuo)作为独家视频合作方,经主办方和讲者审阅授权发布。
这节我们说下Kotlin的泛型。首先默认大家对Java泛型有个基本的认识,如果 不熟悉Java的泛型,可以阅读文章,或是看下Java《Java核心技术卷一基础知识第10版》中关于泛型章节的知识,讲述的也很详细。其实Kotlin的泛型和Java很相似。他们都是伪泛型,所谓伪泛型就是我们们是无法获取到泛型的具体的类型的。以为Java存在类型擦除和转换。本篇还是和反射一样,从实际代码编写角度,说下Kotlin的泛型
Utils 工具类是无构造参数的 static 方法集合,用于扩展某个对象的功能,如 MathUtils,ToastUtils,FIleUtils,StringUtils, LogUtils。Utils 类在一定程度上减少了重复代码的问题,它是成本最低的 DRY(Don’t repeat yourself)实践。
最近几周团队的 KMM 进度推进了不少,已经陆续把几个小业务需求迁移到了 KMM。
Kotlin中的枚举类和Java中的枚举类型非常相似,具有类的特性。一般将可枚举的同类型的一组值作为枚举类定义。
Java中的反射机制,使得我们可以在运行期获取Java类的字节码文件中的构造函数,成员变量,成员函数等信息。这一特性使得反射机制被常常用在框架中,想要比较系统的了解Kotlin中的反射,先从Java的反射说起。
前面三章的内容是写给希望快速了解 Kotlin 语言的大忙人的。 而从本章开始,才会真正讲述 Kotlin 语言的神奇之处。 与 Java 相同,Kotlin 声明类的关键字是class。类声明由类名、类头和类体构成。 其中类头和类体都是可选的; 如果一个类没有类体,那么花括号也是可以省略的。 4.1 构造函数 Kotlin 的构造函数可以写在类头中,跟在类名后面,如果有注解还需要加上关键字constructor。这种写法声明的构造函数,我们称之为主构造函数。例如下面我们为Person创建带一个Stri
领取专属 10元无门槛券
手把手带您无忧上云