最佳日常交易
最佳日常交易

关于Androidbob体育提现bob哪个彩靠谱权威的链接可能会使我们赢得佣金。学到更多。

Kotlin vs Java for bob体育提现Android:关键差异

Kotlin vs Java的辩论继续进行,每种语言都有自己的优点,但是什么使它们脱颖而出?
经过
2019年10月18日
Kotlin vs Java

当您考虑Android时,Java可能仍然是第一个想到的编程语言bob体育提现使用Java进行Android开bob体育提现发。实际上,Kotlin现在是Google的首选Android的官方语言!bob体育提现

如今,Andrbob体育提现oid Studio带有Kotlin支持的内置,因此创建一个了解Kotlin代码的Android项目就像在Android Studio的项目创建向导中选择复选框一样容易。支持该选项的支持太多了,以至于该决定现在主要归结为偏爱。

但是,如果您确实从Java转到Kotlin,那么您到底要获得什么?Kotlin具有什么功能,Java没有的功能,反之亦然?

在本文中,我们将研究Kotlin vs Java之间的所有主要区别。

Kotlin vs Java,后者提供了更多简洁的代码 - 没有FindViewByids

如果您比较了执行相同工作的Kotlin类和Java类,那么Kotlin类通常会更简洁,但是在某个领域中,Kotlin可以严重减少您需要写的样板代码的量:FindViewByids

Kotlin bob体育提现Android扩展程序允许您将视图引用导入到活动文件中,这时您将能够使用该视图,就好像它是活动的一部分一样。结果?您再也不必再写其他FindViewById方法了!

在使用这些扩展名之前,您需要在模块级构建中添加额外的插件。gradle文件(应用插件:“ Kotlin-Android-Extensions”),但是之后,您准备开始导入视图。bob体育提现例如,如果您的activity_main.xml文件包含带有ID文本视图的文本视图,则将以下内容添加到您的活动中:

代码
导入kotlinx.androbob体育提现id.synthetic.main.activity_main.textview

然后,您可以仅使用其ID访问此文本视图:

代码
TextView.setText(“ Hello World”)

这是很多比爪哇同等学历更简洁:

代码
textView text =(textView)findViewById(r.id.textview);text.setText(“ Hello World”);

Kotlin默认情况下是无效的

NullPoInterExceptions对Java开发人员来说是沮丧的巨大来源。Java允许您将null分配给任何变量,但是如果您尝试使用具有空值的对象引用,那么请振作起来以遇到NullPoInterException!

另请阅读:Kotiln用于Andbob体育提现roid介绍

在Kotlin中,默认情况下,所有类型都是不可删除的(无法持有零值)。如果您尝试在kotlin代码中分配或返回null,则它将在编译时失败,因此以下几行都不会编译:

代码
val名称:字符串= null
代码
fun getName():string = null

如果你真的想要将null值分配给Kotlin中的变量,然后您需要通过在类型之后添加问号来明确将该变量标记为可nullable。

代码
val编号:int?= null

这几乎无法在Kotlin中遇到NullPoInterExceptions - 实际上,如果您确实遇到了此例外,那么很可能是因为您明确要求Kotlin扔一个,否则NullPoInterException是源自外部Java代码。

扩展功能

Kotlin使开发人员能够扩展具有新功能的课程,这是理想的选择,如果您总是认为缺少重要的方法!

这些“扩展功能”在Java中不可用,尽管它们有其他可以用于Android开发的编程语言,例如C#。bob体育提现

阅读下一篇:Java初学者教程

您可以通过将要扩展的类的名称(例如'string')的名称前缀到要创建的函数的名称(例如“ styleString”)来创建扩展功能:例如:

代码
fun String.stylestring():字符串{//样式字符串,然后返回//}

然后,您可以通过扩展类的实例调用此函数。符号,好像它是该类别的一部分:

代码
mystring.stylestring()

Coroutines是一流的公民

每当您启动长期运行的操作(例如网络I/O或CPU密集型工作)时,调用线程被阻止,直到操作完成为止。由于默认情况bob体育提现下,Android是单线程,因此一旦阻止了主线程,您的应用程序UI就会冻结,并且直到操作完成之前,它将保持不反应。

在Java中,该解决方案传统上是创建一个背景线程,您可以在其中执行这项密集或长期运行的工作,但是管理多个线程可以导致复杂,容易出错的代码,而创建新线程是一个昂贵的操作。

虽然您可以在Kotlin中创建其他线程,但也可以使用Coroutines。Coroutines通过在某个点暂停执行而不会阻止线程,然后在以后的另一点(可能在另一个线程上)恢复此功能,从而执行长期和密集的任务。这使您可以创建非阻滞异步代码看起来同步,因此更清晰,简洁和可读。Coroutines也是无stack的,因此与线程相比,它们的内存使用量较低,并且它们为其他异步非阻滞编程(例如异步/等待)打开了其他样式的门。

没有检查例外

Kotlin没有检查例外,因此您无需捕获或声明任何例外。

无论这是吸引您到Kotlin的东西,还是让您坚持使用Java都取决于您对检查例外的看法,因为这是将开发人员社区划分的功能。如果你’re sick of try/catch blocks cluttering up your Java code, then you’re going to be happy with this omission, however if you find that checked exceptions encourage you to think about error recovery and ultimately push you towards creating more robust code, then you’re more likely to see this as an area where Java has the edge over Kotlin.

本地对委派的支持

与Java不同,Kotlin通过一流委派(有时称为隐式委托)支持“继承的组成”设计模式。委托是接收对象将操作委托给第二委托对象的委托对象,该对象是具有原始上下文的帮助对象。

Kotlin的班级代表团是继承的替代方案,可以使用多个继承。同时,Kotlin的委派属性有助于防止代码重复,例如,如果您需要重用多个属性的Geters和Setters相同的代码,则可以将此代码提取到委派的属性中。属性委托需要定义getValue运算符函数,并且可以选择地,setValue运算符:

代码
类代表{运算符fun getValue(...)... ... ...}操作员娱乐setValue(...)... ... ...}}

然后,当您创建属性时,您可以声明该特定属性的Getter和Setter功能由另一类处理:

代码
类myClass {var属性:veregate()}字符串

数据类

一个项目的多个类别只能持有数据,这并不罕见。在Java中,即使课程本身的功能很小,您也会发现自己为这些课程编写许多样板代码。通常,您需要定义一个构造函数,字段来存储每个字段的数据,getter和setter函数,以及hashCode(),equals(equals()和toString()函数。

在Kotlin中,如果您在类定义中包括“数据”关键字,则编译器将为您执行所有这些工作,包括生成所有必要的Getters和Setter:

代码
数据类日期(var月份:字符串,var Day:int)

聪明的演员

在Java中,您通常必须检查类型,然后在已经很明显可以施放对象的情况下施放一个对象。

Kotlin的智能演员可以为您处理这些多余的演员阵容,因此,如果您已经与Kotlin的“ IS”操作员进行了检查,则无需在声明中进行演员。例如,编译器知道以下阵容是安全的:

代码
如果(Hello是字符串){printString(Hello)}

支持构造函数

与Java不同,Kotlin类可以具有主构造函数和一个或多个辅助构造函数,您可以通过将它们包括在类声明中来创建:

代码
类MainActivity构造函数(firstName:string){}

不支持隐式扩大转化

Kotlin不支持对数字的隐式扩展转换,因此较小的类型不会被隐式转换为较大的类型。在Kotlin中,如果要将类型字节的值分配给INT变量,则需要执行明确的转换,而Java则支持隐式转换。

用Kotlin的注释处理库

Kotlin支持所有现有的Java框架和库,包括依赖注释处理的高级框架,尽管某些Java库已经提供了Kotlin扩展名,例如RxKotlin。

如果您确实想使用依赖注释处理的Java库,则将其添加到Kotlin项目中略有不同,因为您需要使用该依赖项指定依赖项Kotlin-Kapt插件,然后使用Kotlin注释处理工具(KAPT)而不是AnnotationProcessor。例如:

代码
//应用插件//应用插件:'kotlin-kapt'//使用kapt configuration // dependencies {kapt“ com.google.ddagger.dagger:dagger-compiler:$ dagger-compiler:$ dagger-version”...。.. ... ...}

与Java的互换性

在辩论是否将Kotlin还是Java用于Android开发时,您应该知道有第三种选择:bob体育提现两者都使用。尽管两种语言之间存在所有差异,但Java和Kotlin 100%可互操作。您可以从Java调用Kotlin代码,并且可以从Kotlin调用Java代码,因此可以在同一项目中并排将Kotlin和Java类并排放置,并且一切仍然会编译。

当您开始使用Kotlin时,在两种语言之间移动的灵活性很有用,因为它允许您逐步将Kotlin引入现有的项目,但是您也可能更喜欢永久使用两种语言。例如,您可能希望在Kotlin中写一些某些功能,并且您发现在Java中更易于编写的某些功能。由于Kotlin和Java都编译为字节码,因此您的最终用户无法分辨出您的Java代码在哪里结束,而Kotlin代码开始,因此没有理由不能发布由Java组成的应用程序Kotlin代码。

如果您想自己尝试Kotlin,那么只要您有bob体育提现Android Studio 3.0预览或安装更高的方法,您可以使用几种方法:

  • 创建一个新的Androidbob体育提现 Studio项目。最简单的方法是创建一个新项目,并从项目创建向导中选择“ Include Kotlin支持”复选框。
  • 将Kotlin类添加到现有目录中。单击“目录”,然后选择“文件> new> new> kotlin文件/类。” Android Studio将显示横幅,要求您配置项目以支持Kotlin;bob体育提现单击“配置”链接,然后按照屏幕上的说明进行操作。
Kotlin vs Java
  • 将现有的Java文件转换为Kotlin。您可以通过控制点击文件并选择“代码>将Java文件转换为Kotlin文件,可以通过Kotlin Converter运行任何Java文件。

包起来

如您所见,有很多充分的理由更喜欢Kotlin而不是Java,但是有几个区域Java占上风。也许最值得注意的是:此时,许多Android开发人员对bob体育提现Java更为熟悉。Kotlin vs Java的辩论很快就不会很快解决,两者都有自己的优点。因此,您是要转向Kotlin,还是觉得Java仍然是Android开发的最佳选择?bob体育提现让我们在评论中知道!

阅读下一篇:Android开发的Java语法简介bob体育提现