-
Notifications
You must be signed in to change notification settings - Fork 784
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
2019-05-31:请简述一下什么是 Kotlin?它有哪些特性? #67
Comments
额,盲答一波。 |
设计理念 |
我补充一些东西吧。kotlin和java都是运行在java虚拟机的语言。编译后都会生成.class文件。而虚拟机运行的正是.class文件。所以两者都可以用来写Android。再说说个人的一些看法。java作为一门相对时间长一点的语言。相对来说更万能一些。基本上能完成所有的开发场景。而且,因为时间够久,相对来说问题也很少,虽然大家都吐槽分号,类型转换,空指针这些傻瓜操作,但是我并没有觉得不写这些就能对我的开发有质的的提升,唯一让我想学kt的动力就是google的Android实例将来要用kt写。而kotlin作为一门新语言,有他自己的优点,也有一些缺点。具体什么缺点大家看下面的文章吧。 |
kotlin和java一样也是一门jvm语言最后的编译结果都是.class文件,并且可以通过kotlin的.class文件反编译回去java代码,并且封装了许多语法糖,其中我在项目中常用的特性有 1.扩展,(使用非集成的方式 扩张一个类的方法和变量):比方说 px和dp之间的转换 之前可能需要写个Util 2.lamdba表达式,函数式编程. lamdba表达式并不是kotlin的专利,java中也有,但是有限制, 像setOnClickListener一样,接口方法只有一个的情况才能调用, 而在kotlin中对接口的lambda也是如此,有这样的限制,但是他更推荐你使用闭包的方式而不是实现匿名接口的方式去实现这样的功能,闭包对lambda没有接口这么多的限制,另外就是函数式编程 在java8中提供了streamApi 对集合进行map sort reduce等等操作,但是对android api有限制,为了兼容低版本,几乎不可能使用streamApi 3.判空语法 省略了许多if xxx==null 的写法 也避免了空指针异常 4.省略了findViewById ,使用kotlin 就可以直接用xml中定义的id 作为变量获取到这个控件,有了这个 butterknife就可以淘汰了,使用databinding也能做到,但是,非常遗憾,databinding的支持非常不好,每次修改视图,都不能及时生成,经常要rebulid才能生成. 5,默认参数 减少方法重载 fun funName(a :Int ,b:Int = 123) 6.kotlin无疑是android将来语言的趋势,我已经使用kotlin一年了,不仅App工程中使用,而且封装的组件库也是用kotlin,另外说明,kotlin会是apk大小在混淆后增加几百k.但对于更舒适的代码来说这又算的了什么呢 |
多亏使用了JVM,我们可以使用任何语言去编写 Android应用,只要它能够编译成JVM能够认识的字节码就可以了。 备注:摘自kotlin文档中文版-PDF |
还没开始喝这碗汤呢 java不精 Android不通 路漫漫其修远兮 |
你是没怎么用过kotlin吧,建议你学习一下C#和js的函数式编程再来评论,而且kotlin 集合语法糖真的很好用 |
Kotlin 和 Java 都一样都是基于 JVM 的静态开发语言,Kotlin目前是完全兼容 Java 的,也称更好的 Java。 目前也是 Google 认定的 Android 官方开发语言。 相对于 Java 来说更现代化,除了支持面向对象还支持了函数式编程,引入了高阶函数,内联函数,扩展函数等概念,对 lambda 也有很好的支持,还有很多语法糖在开发过程中也是减少了很多的样板代码,我感觉在类型系统的改变是特别大的,可空和不可控类型在语法层面分开虽说不能彻底杜绝空指针但是在编译期就能检测出来很多空指针风险也是不错的,还有对泛型的支持在语法层面使用关键字 out 和 in 可以更好的理解型变,相对于 Java 来说这种语法层面的优化还有很多,目前也是在不断的迭代中。 |
1、函数是头等公民 |
No description provided.
The text was updated successfully, but these errors were encountered: