今天我得鼓吹一波 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 ...
随机推荐
- View体系之属性动画
(内容省略了valueAnimator和PropertyValueHolder使用) 属性动画的使用的主要方式是AnimatorSet和ObjectAnimator配合使用.ObjectAnimato ...
- C# Synchronized 和 SyncRoot 实现线程同步的源码分析及泛型集合的线程安全访问
转载:http://blog.csdn.net/zztfj/article/details/5640889 Synchronized vs SyncRoot 我们知道,在.net的一些集合类型中,譬如 ...
- Linux Xshell连接Linux服务器时报错Socket error Event: 32 Error: 10053
问题描述 在用Xshell连接Linux服务器时,出现错误提示"Socket error Event: 32 Error: 10053. Connection closing...Socke ...
- C#面向对象 类的继承
1.类的访问权限: public:跨程序集,命名空间,必须被using引用: internal:默认当前命名空间: 2.类成员的访问权限: private:私有的,只能当前类: protecte:受保 ...
- .net的mvc的fw版本为4.5发布到阿里云【云虚拟主机】上.
注意:云虚拟主机和云服务器(ECS)不是同一个产品,请注意分别. 云服务器ECS: 云虚拟主机: 我用的是云虚拟主机也是第二个,版本是window server 声明:默认,已经把域名[已备案]绑定 ...
- Linux系统将服务器时间与网络时间同步
遇到一种情景,就是多台服务器之间的时间并不是同步的,有的快有的慢,这时候就要用到网络时间了, 登陆到服务器上,输入命令date可以查询服务器的时间,需要同步的时候需要安装ntpdate; 1. 安装 ...
- python3编写网络爬虫22-爬取知乎用户信息
思路 选定起始人 选一个关注数或者粉丝数多的大V作为爬虫起始点 获取粉丝和关注列表 通过知乎接口获得该大V的粉丝列表和关注列表 获取列表用户信息 获取列表每个用户的详细信息 获取每个用户的粉丝和关注 ...
- python 管道、数据共享、进程池
一.管道(Pipe)(了解) (详情参考:https://www.cnblogs.com/clschao/articles/9629392.html) 进程间通信(IPC)方式二:管道(不推荐使用,了 ...
- 数据合并处理concat
var data = [ {name: '海门', value: 9}, {name: '鄂尔多斯', value: 12}, {name: '招远', value: 12}, {name: '舟山' ...
- selenium 使用
selenium selenium:可以让浏览器完成相关自动化的操作 环境安装: pip install selenium 编码流程: 导包 创建某一款浏览器对象 制定相关的行为动作 from sel ...