陈奇网络工作室

Kotlin初学者指南

建设工作站服务器

你好,世界

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

相关推荐

后台-系统设置-扩展变量-手机广告位-内容页底部广告位3