20

我有一个用 Scala 编写的应用程序,我的一些团队成员想要它的 Java 版本。这是一个使用另一个用 Scala 编写的 API 的演示应用程序,他们希望该应用程序的 Java 版本能够使用 Java 中的 API。但是,该应用程序有点大,我不想在 Java 中手动重写(他们也不想学习 Scala)。是否有任何工具可以从 Scala 代码自动生成(可读)Java 代码?

4

5 回答 5

11

他们希望应用程序的 Java 版本能够使用 Java 中的 API

Scala 类可以从 Java 中使用(因为它最终都是 JVM 字节码)。你能用你的类打包一个 jar 供他们使用吗?

于 2012-03-26T22:29:55.610 回答
9

我认为不可能从 scala 转换回标准 java,因为 Scala 做了一些非常低级的字节码操作。我 90% 确信他们做了一些不能完全转换回普通 Java 代码的事情。

于 2012-03-26T22:33:45.867 回答
6

不,没有这样的工具。
Scala 在某种意义上是 Java 的咖啡。看看 coffescript 中所有时髦的类是如何翻译成 javascript 的。scala 也是如此。
我不认为有很多功能无法以任何方式转换为 Java,但大多数功能将被转换为极其混乱的代码,即使人类会这样做。

但是有java 到 scala 的翻译器

* 不是字面意义上的类

于 2012-03-26T22:35:47.177 回答
4

您必须将 .class 文件反编译为 java 源文件,请注意 scala 会生成更多 .class 文件

您可以使用 sdk 或 jad 反编译器中包含的 oracle 中的 javap

有关详细说明,请阅读以下文章:

将 scala 类链接到 java 源代码

于 2014-07-15T23:02:01.257 回答
3

不确定这是否可行,但您可以通过 java 反编译器运行类文件。

如果它完全起作用,结果必然是丑陋的地狱。

于 2012-03-27T06:37:12.417 回答