如何区分 Java 和 Kotlin 代码?

How to tell the difference between Java and Kotlin code?

作为 Android 应用程序开发的初学者,我发现无法确定它们是用 Java 还是 Kotlin 编写的代码示例。甚至 Whosebug 问题也经常省略语言标记。

代码中是否有一个简单的“告诉”,您可以立即看到使用的是哪种语言?例如,我可以从语法、头文件使用和库函数的某些元素很快区分 C 和 C++。

有什么快速和“明显”的方法可以区分 Java 和 Kotlin?我想探索 Kotlin,而不是通过研究不相关的代码来增加我的(巨大的)困惑。

Java 有强制分号 ';'而科特林没有。 Java 中的类型是 int、string、char 等,而在 Kotlin 中它们是大写的(String、Int、Long、Char),而且 Kotlin 大多数时候可以推断变量的类型 ;)

如果代码使用了“val”、“var”关键字,那么 99% 是 Kotlin。

kotlin 的一些明显特征:

  • 如前所述,最明显的是分号,尽管您可以 添加它们,它们将被忽略

  • 用问号标记的变量(可空性)val foo:String?和val/var/lateinit

    的用法
  • class Foo : Something() <-- 这是继承,没有 extendsimplements

  • 如果涉及文件,kotlin文件以.kt结尾

  • companion object

    的任何引用

个人对我来说最大的指标:

有趣 :) 函数声明 :

fun foo(): String

我找到了 this article helpful
正如人们告诉科特林的那样,它是一种由空安全引入且没有任何分号力的语言 你可以在语法中找到一些关键,比如

**[fun,as,let,also,apply,val,var,lateinit,...]**

那么,哪个更好,您应该使用它吗?该问题的答案取决于您的需要。如果您正在寻找 Google 提供可靠支持的语言,那么 Kotlin 可能是最佳选择,因为 Android Studio 3 现在支持 Kotlin 开发。但是,如果您需要速度或想要一个具有更大灵活性的 open-source 项目(尤其是在 third-party 库方面),Java 可能是您的正确选择。

参考this article

Kotlin 关键字和运算符。 https://kotlinlang.org/docs/keyword-reference.html

Java 语言关键字。 https://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html

最有可能是科特林:

val
var
fun
nameX: TypeX
nameX : TypeX?
object: 
open class
when
@
:
sealed
!!
->
"$name or ${name}"
etc

最有可能java:

; semicolon
TypeX nameX
void
extends 
implements
public class
instanceof
etc

如果文件以.kt结尾,则为Kotlin.