今天我得鼓吹一波 Kotlin
Kotlin 被作为 Google 官方语言也有一年多了,但除了刚宣布那个月极度火爆以外,后面生活又回归了平静。不少小伙伴紧跟 Google 爸爸的步伐,也对 Kotlin 有了或多或少的了解,GitHub 上也有了相当一部分的 Kotlin 开源项目。
但或许是后知后觉,依然还是有相当一部分小伙伴,和南尘一样,只是在 Kotlin 很火的那段时间,简单了解了一下,就像当初的微信小程序一样。然后生活还是回归平静,依然对它停留在知道的程度。
先推荐一下最近在 GitHub 上更新的项目
但经过一周多的详细学习,我已经把自己 GitHub 上的开源项目 AiYaGirl 进行了深度改写,完全使用 Kotlin 语言新开辟了一个分支。
AiYaGirl 地址:https://github.com/nanchen2251/AiYaGirl
可能有不少小伙伴还不知道 AiYaGirl ,这是南尘去年在 GitHub 上开源的一款 APP,功能比较简单,主要采用 Retrofit && RxJava && MVP 模式,数据来源于代码家的 Gank.io,目前在 GitHub 上有着将近 1k 的 Stars。
GitHub 上一直都有挺多各具特色的完整架构 APP,它们各有各的优势,我非常地感动,你看到了这儿,这就是我的幸运。
现在我新增了一个 kotlin 分支,已经完全采用 Kotlin 改写完毕,希望你能喜欢。
如果你对 RxJava 不是很熟悉,我强烈推荐你能看看我的 RxJava2Examples 开源库,我们用代码 && Blog 对 RxJava2 的方式向你展示 RxJava 2 的各种操作符和一些使用细节,希望不会让你失望。目前超过 50 万的阅读说明了 RxJava 确实被人关注,如果你还不 RxJava2,我劝你去翻一翻文档,写一写 Demo。
RxJava2Examples 地址:https://github.com/nanchen2251/RxJava2Examples
GitHub 和公众号我都会保持维护,期待你与我进行比心的交流。
因为我也曾遇到各种棘手的问题,到处询问不到答案。
那时候的我,也许正如现在的你。
而我,也还在这条道路上默默前行~
好像有点偏题,但只要还是想给大家推荐 AiYaGirl,因为我相信既有 Java 实现又有 Kotlin 实现的对比,会让你的 Kotlin 学习事半功倍。
为什么要鼓吹 Kotlin
还是得回到正题,之前可能因为各种各样的原因,我一直没把 Kotlin 的学习提上日程,倒是奋斗在 Python 的路上。但自从面试被屡次问到 Kotlin 后,我不得不跟上社会的步伐,开始 Kotlin 的学习,毕竟我是一名 Android 开发呀!
几天下来,对 Kotlin 不敢说非常了解,但确实被它的简洁性和易用性吸引到爆,无论是它极佳的函数式编程支持,还是它无比高效地编程方式,让我时刻为之兴奋。
简单用一点代码给你展现它的灵活性吧。
比如我们 Java 中这样一串代码:
int score = // some score;
String grade;
switch (score) {
case 10:
case 9:
grade = "Excellent";
break;
case 8:
case 7:
case 6:
grade = "Good";
break;
case 5:
case 4:
grade = "OK";
break;
case 3:
case 2:
case 1:
grade = "Fail";
break;
default:
grade = "Fail";
}
当你用 Kotlin 实现后,你会发现,怎么可以这么简单?
var score = // some score
var grade = when (score) {
9, 10 -> "Excellent"
in 6..8 -> "Good"
4, 5 -> "OK"
in 1..3 -> "Fail"
else -> "Fail"
}
额,还有对数据类的支持,让人为之抓狂。
public class Developer {
private String name;
private int age;
public Developer(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Developer developer = (Developer) o;
if (age != developer.age) return false;
return name != null ? name.equals(developer.name) : developer.name == null;
}
@Override
public int hashCode() {
int result = name != null ? name.hashCode() : 0;
result = 31 * result + age;
return result;
}
@Override
public String toString() {
return "Developer{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
Kotlin 会怎样?
data class Developer(val name: String, val age: Int)
对,你没有看错,就一行代码。
只贴代码从来都是一件不负责任的事,所以我就举这么两个例子,如果你喜欢的话,赶紧加入我们 Kotlin 的大军吧~
Kotlin 是否会取代 Java
不少小伙伴在后台问我这个问题,oh...
这个真的很难说,这个世界上并不是说一件事物好,就必然会得到广泛应用的。一件事物的出现,会有一群人去推广,但也会有人会去阻止,只能看谁做的更到位吧~
额外的话
好啦,自从 Kotlin 出来后,事情的发展就变得极其不可控,不少推介者就蹭了好大一波流量,而南尘这么晚再出来鼓吹,应该不会被打吧?
今天我得鼓吹一波 Kotlin的更多相关文章
- 可能是国内第一篇全面解读 Java 现状及趋势的文章
作者 | 张晓楠 Dragonwell JDK 最新版本 8.1.1-GA 发布,包括全新特性和更新! 导读:InfoQ 发布<2019 中国 Java 发展趋势报告>,反映 Java 在 ...
- Kotlin初探
前几天看到新闻,Google将Kotlin语言作为Android应用开发的一级语言, 与Java并驾齐驱, 这则消息在开发界一下就炸开了锅( 好像平息的很快...)! 连Google的亲儿子go语言也 ...
- android仿微信红包动画、Kotlin综合应用、Xposed模块、炫酷下拉视觉、UC浏览器滑动动画等源码
Android精选源码 仿微信打开红包旋转动画 使用Kotlin编写的Android应用,内容你想象不到 Android手机上的免Root Android系统日志Viewer 一个能让微信 Mater ...
- 如何看待 Kotlin 成为 Android 官方支持开发语言?
Google IO 2017宣布了 Kotlin 会成为 Android 官方开发语言.一时间朋友圈和Android圈被各种刷屏.当然我也顺势而为发布了一篇的文章<为什么我要改用Kotlin&g ...
- 如何看待 Kotlin 成为 Android 官方支持开发语言
Google IO 2017宣布了 Kotlin 会成为 Android 官方开发语言.一时间朋友圈和Android圈被各种刷屏.当然我也顺势而为发布了一篇的文章<为什么我要改用Kotlin&g ...
- 个人永久性免费-Excel催化剂功能第82波-复制粘贴按源区域大小自动扩展收缩目标区域
日常工作中,复制粘贴的操作,永远是最高频的操作,没有之一,在最高频的操作上,进行优化,让过程更智能,比一天到晚鼓吹人工智能替换人的骇人听闻的新闻来得更实际.此篇带来一点点的小小的改进,让日后无数的复制 ...
- 个人永久性免费-Excel催化剂功能第50波-批量打印、导出PDF、双面打印功能
在倡导无纸化办公的今天,是否打印是一个碍眼的功能呢,某些时候的确是,但对于数据的留存,在现在鼓吹区块链技术的今天,仍然不失它的核心价值,数据报表.单据打印出来留存,仍然是一种不可或缺的数据存档和防篡改 ...
- Kotlin exception
cannot generate view binders java.lang.StackOverflowError 最近写kotlin项目,使用databinding,在适配器中定义了事件接口,在适配 ...
- 收集的21个优秀的学习资源Kotlin
一.教程 1.The Kotlin Website Kotlin 官方网站(英文) 2.Kotlin editor Kotlin 在线编辑器 3.Keddit:在开发Android应用程序时学习K ...
随机推荐
- Floyd算法_MATLAB
%求图中任意两点之间的最短距离与最短路径 %floyd算法通用程序,输入a为赋权邻接矩阵 %输出为距离矩阵D,和最短路径矩阵path function D=floyd(a) n=size(a,);%行 ...
- 详解JS设计模式
原文链接:www.cnblogs.com 一:理解工厂模式 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式. 简单的工厂模式可以理解为解决 ...
- recovery 界面汉化过程详解
一. 主要是针对recovery汉化,主要汉化对象是界面显示为中文. 二. 基于中文的汉化,有两种方式,一种是基于GB2312的编码格式汉化,另外一种是基于unicode编码格式汉化.下面介绍unic ...
- IDLE提供的常用快捷键
IDLE提供的常用快捷键 快捷键 说明 适用于 F1 打开Python帮助文档 Python文件窗口和shell窗口均可用 Alt+P 浏览历史命令(上一条) 仅Python Shell窗口可用 Al ...
- monkeyrunner.bat运行python脚本/命令行
http://luochunfeng163.blog.163.com/blog/static/1670092492014258914775/
- 两个Map的对比,三种方法,将对比结果写入文件。
三种方法的思维都是遍历一个map的Key,然后2个Map分别取这2个Key值所得到的Value. #第一种用entry private void compareMap(Map<String, S ...
- 详解PHP中的过滤器(Filter)
PHP 过滤器用于验证和过滤来自非安全来源的数据,比如用户的输入. 什么是 PHP 过滤器? PHP 过滤器用于验证和过滤来自非安全来源的数据. 验证和过滤用户输入或自定义数据是任何 Web 应用程序 ...
- php配置文件php.ini的详细解析(续)
file_uploads = On // ...
- 适合使用并行的一种bfs
这种写法的bfs和前面的最大区别在于它对队列的处理,之前的简单bfs是每次从队列中取出当前的访问节点后,之后就将它的邻接节点加入到队列中,这样明显不利于并行化, 为此,这里使用了两个队列,第一个队列上 ...
- 【转】10条你不可不知的css规则
10条你不可不知的css规则 Posted on 2006-12-20 10:33 雨中太阳 阅读(343) 评论(1) 编辑 收藏 :[译]10条你不可不知的css规则正文: Published D ...