Introptionã§7££Matlin
#java #kotlin #oop #jetbrains

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!

要验证这一点的真实性,让我们看一下下面的课程:

在此Kotlin计划中,我们实例化了代表支票帐户的两个类,并致电所有母亲以比较其抽象能力。请注意,要访问Kotlin中的Getters和Setter,只需使用Koud6的概念即可。这是萨达:

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的最终差异。

重要的是要注意,尽管这些属性已经随着他们的Getters和Setter的实现,但这意味着我们无法自定义它们。让我们在当前帐户类中实现一个新属性,并创建一个自定义Getter。该属性代表了问题的答案:帐户是负面的?这足以使该属性的收获是帐户余额与零之间的比较:

准备就绪:我们有一个自定义Getter!现在,为了制作一个自定义设置器,我们将为余额属性实施设置器。宽度如下:仅当传递给六个六元的值是正时,余额才会更改:

制造。请注意,在实施设置器之前,我们必须初始化该属性,这是必要的,因为六式体使用属性的值来进行分配,因此不能无效。至于关键字field,它代表了自己的属性,在Java中使用Koud14。

Funã§ãµs

您必须注意到,要在Kotlin中声明功能,我们使用关键字fun,以查看Kotlin - Kotlin - μ的有趣编程。此外,称为Koudde16是指示程序必须在何处开始执行的特殊功能。现在,让我们更深入地看一下功能的语法,其中一个 kotlin的示例

Sintaxe função em 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的文章中讨论。

感谢您的关注,下一个!