Kotlin已将Java作为官方的Android语言占据,几家大型公司一直将其Java后端迁移到Kotlin。在这篇文章中,我将向您展示为什么会发生这种情况。
科特林的力量
kotlin像爪哇一样强大,这真是不可思议。在anterior文章中,我谈到了两者之间的互操作性,并简要讲述了Jetbrains工程师创建的语言的故事。这种互操作性以及简洁的Kotlin是遗产的理想替代品。
让我们以一个代表Java和Kotlin中一个支票帐户的课程为例。
em java:
em kotlin:
ão,上面的kotlin代码完全执行Java中的工作ð±
会计类别的想法是代表一个具有以下属性的帐户:可以更改的持有人,CPF,代理商,帐户,所有不可变的帐户,所有不可变和可变余额。要在尊重封装原理的Java中构建此类,我们必须开发必要的Getters和Setter,以创建辅助功能,例如Koud0,Koud1,equals()
和hashCode()
。但是要在Kotlin中这样做,只需创建一个类日期,请使用正确的属性声明器(var
和koud5),仅此而已:我们拥有前面提到的函数的所有必要的Getters和Setters!
要验证这一点的真实性,让我们看一下下面的课程:
Ronaldo
João
70116672293
69624
246964
10000.0
12000.0
ContaCorrenteKt(titular=João, cpf=70116672293, agencia=69624, conta=246964, saldo=12000.0)
152796811
false
Ronaldo
João
70116672293
69624
246964
10000.0
12000.0
ContaCorrenteJava(titular=João, cpf=70116672293, agencia=69624, conta=246964, saldo=12000.0)
181425962
false
ContaCorrenteKt(titular=João, cpf=70116672293, agencia=69624, conta=246964, saldo=12000.0)
ContaCorrenteJava(titular=João, cpf=70116672293, agencia=69624, conta=246964, saldo=12000.0)
正如我们所看到的,两者都具有相同的抽象力量,但是两者之间的差异是巨大的!这是为什么与Java相比,Kotlin越来越多地采用的原因。
是选择
您可能已经注意到,我们多次使用Kotlin中的几个非常重要的关键字:Koud4和Koud5。这是什么意思?基本上,这是语言用来声明可变的属性和不变的属性的观念。
通过宣布像koud4这样的属性(来自 variable ),我们的意思是它是可变的,我们将赢得其固定器,并同意,它与您的母亲©all laste in Java相对应getter和setter。
通过宣布像val
这样的属性(来自价值),我们的意思是它是不变的,当然,我们在隐式隐含地隐含了它的Motter。通过这种方式,它对应于Java的最终差异。
准备就绪:我们有一个自定义Getter!现在,为了制作一个自定义设置器,我们将为余额属性实施设置器。宽度如下:仅当传递给六个六元的值是正时,余额才会更改:
制造。请注意,在实施设置器之前,我们必须初始化该属性,这是必要的,因为六式体使用属性的值来进行分配,因此不能无效。至于关键字field
,它代表了自己的属性,在Java中使用Koud14。
Funã§ãµs
您必须注意到,要在Kotlin中声明功能,我们使用关键字fun
,以查看Kotlin - Kotlin - μ的有趣编程。此外,称为Koudde16是指示程序必须在何处开始执行的特殊功能。现在,让我们更深入地看一下功能的语法,其中一个 kotlin的示例:
与java一样,功能的名称很快就出现在Innio中,在这种情况下为max
,然后在各方中,我们的parantees以<nome>: <Tipo>
的形式,然后是两个点函数的返回类型,最后是,在钥匙之间,身体本身。此函数比较两个值并返回最大的值。请注意,在Kotlin中,if
不是声明(语句),而是一种表达式,即它具有一个值,它与您的羊毛比较链接。在上面的情况下,如果a
高于b
,则表达式的值将为a
,如果是b
,这就是为什么可以返回表达式的原因。
注意:还有另一种更简洁的方法来编写科特林中的koud17函数:
=
取代了功能,键和关键字koud26的返回类型。很酷,不?
空安全
用黄金钥匙结束,让我们谈谈科特林的最佳素质之一:您的安全性。您,开发人员Java,您遇到过多少次该死的NullPointerException
?因为知道有了Kotlin,您的问题已经结束,或者几乎已经结束。
在这种非常亲爱的语言中,我们可以将属性声明为null或nulted(在葡萄牙语中这很丑陋,但是用英语为 nullable and <> notable ),如下:
要访问nome
属性,我们没有任何问题,因为我们知道它不能无效。但是属于姓氏呢?在Java中,有必要执行以下操作:
if(sobrenome != null) System.out.println(sobrenome.length());
但是在Kotlin,我们有一个名为safe call
的功能。因此以下内容可以简化为以下内容:
println(sobrenome?.length)
这是?.
概念,它确保我们目前从容器中访问了目前尚未空和无效的属性,仅返回null。这个概念在链接中非常多,是kotlinlang.org的以下示例:
bob?.department?.head?.name = managersPool.getManager()
如果链的任何属性为null,则此属性是跳跃而不考虑的。
但是,我想为无效的属性创造不可撤消的属性呢?您可以执行以下操作:
val l: Int = if (b != null) b.length else -1
porti©m看到,我们再次需要一个完整的表达式才能获得简单的归因。考虑解决这个问题,Kotlin拥有出色的猫王操作员!
val l: Int = b?.length ?: -1
创意名称,不是吗?该?:
操作员有助于评估左表达式是否为null,如果不是null,则将其返回,如果是,则返回正确的操作员!
现在,即使使用所有这些选项,您仍然想看到NullPointerException
,Kotlin叶子,只需使用Koud48操作员:
val l = b!!.length
在这种情况下,如果b
不是零和无效,则将返回其值,但是如果是,将启动NullPointerException
!
帖子
今天就这样!我们已经能够谈论Kotlin,但是有一些重要的概念,例如Koud54,Koud55表达式,一种名为Koud56的新表达式,等等,我们将在下一篇有关Kotlin的文章中讨论。
。感谢您的关注,下一个!