建设工作站服务器
你好,世界
Kotlin是一种在JVM上运行的静态语言,与现有Java代码的互操作性是100%。
对于大多数Java开发人员来说,下一步应该很熟悉。
包com。 错误消息。 科特林;
公共课程App{
publicstaticvoidmain ( string [ ] args ) {
系统。 出来。 println(“Helloworld!” );
}
}
如下
Kotlin中
打印“Hello World”
:
funmain(args:Arraystring ) {
println(“Helloworld!” )
}
有些差异很明显,例如缺少分号和代码多么简洁。
和科特林
Java的
为了理解Kotlin,让我们仔细看看它的功能及其与Java的比较。
无安全性
首先,我们将介绍支持空安全的功能,这是Kotlin最有用的功能之一。
在Java中,可以是任何对象
空值。
这意味着您必须在整个代码库中添加运行时检查以防止
NullPointerException
崩溃,这通常是
语言设计师
据说
十亿美元的错误。
静态类用户{
字符串名称;
}
publicvoidprintusername{
如果(用户。 名字!=空) {
FOO (用户。 名字。 长度();
}
}
在Kotlin中,对对象的引用必须为空或空。
classuser(varname:string? //name属性可以为null
类用户( varname:string )//name属性不能为空
如果开发人员尝试将可为空的对象传递给第二个类,则会发生编译时错误。
安全呼叫运营商
以下内容对大多数Java开发人员来说非常熟悉。
请参阅
用户
参数可以是以下参数之一
空值
所以,需要进行运行时的检查
NPE
避开。
voidprintusername (用户) {
如果(用户。 的getName (的!=空) {
FOO (用户。 的getName (长度);
}else{
foo (空; 指定空整数
}
}
voidfoo (整数长度)
Kotlin可以通过
安全呼叫
操作员
简化这个过程。
如果
名字
如果不为null,则长度作为参数传递。
否则,将传递空引用。
funprintusername(user:user ) {
FOO (用户。 你叫什么名字? 长度)如果user.name为空//,则返回空值
}
funfoo(Length:int? () }
或者,如果在值为null时执行代码没有意义,请使用
莱特
:
fun foo (空user:user? () )。
空用户? let {打印用户名称(空用户) }//仅打印非空用户名
}
funprintusername(user:user ) {}//User为非空引用
类定义
与Java相比,
Kotlin
等级
很简洁。
以下类定义了三个字段,getter和setter超过了30行!
classUser{
最终字符串名称;
intage=18;
字符串地址;
公共用户( string name,intage,Stringaddress ) {
就是这个。 name=name;
就是这个。 年龄=年龄;
就是这个。 地址=地址;
}
公共字符串获取名称
返回姓名;
}
publicintgetAge ( ) }
回到年龄;
}
公共语音设置( intage ) {
就是这个。 年龄=年龄;
}
公共字符串获取地址(
返回地址;
}
公共地址(字符串地址)。
就是这个。 地址=地址;
}
}
在Kotlin中,一行代码可以实现相同的功能。
classuser(valname:string,varage:Int=18,varaddress:String? )
不可变引用更容易。
这只是
var
关键词
切换
的问题
val。
您可能已经注意到了,对于Kotlin,可以为参数指定默认值。
这是
用Kotlin可以消除
Java模式,例如
构建器模式。
这还可以大大减少语法糖所需的代码量,例如公共API的方法链。
数据类
如果我们类的主要目的是存储来自API的JSON有效载荷等数据,事情就会变得更简单。
在Kotlin中,它们被称为
数据类。
dataclassuser(valname:string,varage:Int=18,varaddress:String? )
只需添加
数据
关键字是自动生成的
equals ( ) )
,
hashCode ( ) )
,
toString ( ) )
、并
复制() )
为了我们班实现。
省略这种等效的Java实现,以节省读者的理性和带宽成本。
类型估计
Kotlin使用类型估计进一步提高了简洁性。
请考虑一下这个Java类:
valauthors=输入。过滤{!它。isEmpty()}//删除空值。map{Author(it)}//将字符串映射到作者对象。sortedBy{it。name}//按作者名排序
println(authors)//按字母顺序打印作者
}
Reactive Streams最近在Android世界中流行起来,
RxKotlin
库
也为Kotlin提供了支持。
valcereals=listOf(“KellogsCoroutines”,“CocoaPods”,“LockyCharms”)
谷物。toObservable()
//在后台线程上执行一些密集/复杂的计算。subscribeBy(onNext={
println(it)//观察主线上的每个谷物并打印出来
})
Kotlin Native和Javascript
Kotlin主要针对JVM,但也可以
使用LLVM工具链
转换为Javascript
或编译为本机代码。
这两个目标在开发阶段还处于初期阶段,但对于希望在整个堆栈中使用一种语言进行编程的人来说,这显示了很大的希望。
Kotlin Native特别有趣,因为Swift
看起来与Kotlin非常相似
,这意味着有朝一日可能会在Android和iOS应用程序中使用相同的本机代码库。
另一个值得一提的是
Gradle Script Kotlin
,它将静态类型的所有好处带到现有的Gradle DSL和
Spring Boot
,后者为Kotlin提供官方支持
1.5。
潜在的下行
那么Kotlin的缺点是什么?
在Android上,应用程序大小是一个潜在的问题。
Kotlin目前
为您的应用程序大小
增加了大约
1Mb,
并使用了大约7,000种方法,尽管其中大部分都可以被
Proguard
剥离。
对于传统的Java桌面应用程序来说,这不是什么大不了的事,但对于拥有更多资源限制的移动设备,这对某些团队来说可能是一个交易破坏者。
Kotlin并没有和Java一样长,因此,识别不良做法和代码味道要困难得多。
Java有22年的良好实践和linting工具可供借鉴,而Kotlin却没有。
例如,扩展函数是一个非常强大的功能,但可以轻松地用于应该使用类和抽象的地方。
更人性化的因素是尽管Kotlin与Java非常相似;
学习一门新语言总会有一段时间,这会导致生产力暂时下降。
特别是如果团队中的每个人都在过去十年中成为Java专家,他们可能不愿意放弃并以他们不熟悉的语言重新开始。
外部客户可能对Kotlin感到不太满意,因为有人认为它与Java一样久不存在,并且更为未知。
为什么Kotlin击败Java
让我们总结一下Kotlin的一些主要优点:
科特林是
远远
比Java更简洁
Lambdas和功能构造已经开箱即用多年
100与现有Java代码的互操作性
Kotlin实际上消除了最常见的Java错误之一,可怕的
NullPointerException
IntelliJ IDEA提供出色的工具支持
这种语言是从头开始编写的,因此,它
感觉
就像是每天都在其中编程的人设计的语言
我们认为,由于这些原因,Kotlin在Android上击败了Java。
在传统的Java桌面应用程序中,由于Java 8包含可比较的语言功能,例如lambda,流和其他,因此它是一个更接近的竞争。
但是,我们仍然相信Kotlin的简洁性在这种情况下获胜。
关于Kotlin入门的建议
在一篇博客文章中总结一下编程语言是不可能的,所以如果你或你的团队有兴趣使用Kotlin,我们的建议只是试一试!
最常见的两条路线是在Kotlin中编写单元测试或将现有的Utils类转换为Kotlin。
IntelliJ IDEA还提供了一个方便的自动转换快捷方式,可将现有Java代码迁移到Kotlin。
虽然这不一定会给你最惯用的Kotlin,但它是一种在你熟悉的代码库中学习语法的好方法。
最重要的是不断评估每个人是否对Kotlin的采用水平感到满意,并确定任何痛点或隐藏的陷阱。
Kotlin是Java的一个非常好的替代品,如果做得好,它有可能提高开发人员的快乐,降低代码库的复杂性,并提高业务的生产力。
更多关于云服务器,域名注册,虚拟主机的问题,请访问西部数码代理商官网:www.chenqinet.cn