混合 Java 和 Kotlin 是个坏主意吗?

Is mixing Java and Kotlin a bad idea?

我一直在努力学习 Kotlin,但我发现当我可以慢慢地将它应用到我在 Java 中从事的工作时,它会变得更容易学习。在生产中混合使用 Java 和 Kotlin 是个坏主意吗?

我知道总体目标是使用其中之一,但后者有什么问题吗?

客观地说,根据 the official docs:

,我们可以说与 Java 的兼容性是 Kotlin 的主要目标之一

Kotlin is 100% interoperable with the Java programming language and major emphasis has been placed on making sure that your existing codebase can interact properly with Kotlin. You can easily call Kotlin code from Java and Java code from Kotlin. This makes adoption much easier and lower-risk. There’s also an automated Java-to-Kotlin converter built into the IDE that simplifies migration of existing code.

许多功能是专门为简化 calling Java from Kotlin or vice versa 而设计的:例如,属性 访问器的实现方式与普通 Java 访问器方法相同,并且能够实施 SAM 接口;在 Kotlin 以不同方式实现事物的地方,通常有注释或其他方式来使用 Java 风格的实现。

根据我自己的经验,混合 Java 和 Kotlin classes 没有问题。我们的许多项目都有(用 Kotlin 编写的新 classes,一些旧的已转换,但许多仍在 Java 中),我没有发现任何重大问题。我还将一个主要项目从 Java 转换为 Kotlin,一次一个 class — 在每一个之后,所有内容仍然编译和测试并且 运行 完美。

当然,新项目也可以一开始就用Kotlin写;但是如果你已经知道 Java,混合使用一些 Kotlin 绝对是一种选择,并且可能是最简单的方法。您可以在方便的时候逐步将部分转换为 Kotlin,或者将它们长期保留 Java;几乎所有东西都可以正常工作,并且您可以从 Kotlin 中 的部分中获益。 (您甚至可能会发现您编写 Java 代码的方式受益于了解 Kotlin!)