lui*_*ado 23 java groovy plugins code-translation
我继承了大量的Groovy代码,并且由于以下几个原因我发现很难维护:
虽然我很欣赏这种语言的紧凑性,但维护工作既困难又繁琐.
我试图手动将一些部分转换为Java,这很痛苦.您是否了解有助于此转换的任何工具或插件?
小智 25
IntelliJ IDEA对重构groovy代码提供了相当不错的支持.它还有一个来自Groovy的源代码级转换器 - > Java.大多数情况下它会生成无法编译的代码,但它可能有助于您开始转换代码的过程.Groovy代码:
class HelloWorld {
def name
def greet() { "Hello ${name}" }
int add(int a, int b) {
return a+b;
}
}
Run Code Online (Sandbox Code Playgroud)
转换的Java代码:
public class HelloWorld {
public GString greet() {
return "Hello " + String.valueOf(name);
}
public int add(int a, int b) {
return a + b;
}
public Object getName() {
return name;
}
public void setName(Object name) {
this.name = name;
}
private Object name;
}
Run Code Online (Sandbox Code Playgroud)
dby*_*rne 14
可能不是你想听到的答案,但我会专注于使用Groovy变得更加舒服,而不是试图将代码转换为Java.你可以在Groovy中做很多事情,这些事情根本不能很好地转换为Java(比如闭包).任何自动转换为Java都会使代码的可读性降低,难以理解.
如果你不能被说服坚持Groovy,并且你必须迁移到Java,你最好的选择是手工完成.
Groovy 和 Java 语言都编译为相同的字节码(Java 平台字节码)。所以只需 (a) 将您的 .groovy 文件编译为 .class 文件;(b) 使用 JDGUI 等反编译器将您的 .class 文件反编译为 .java 文件。
我找到了替代解决方案,使用 Groovy++。它几乎具有 Groovy 的所有优点,而且具有 Java 的性能和强类型。此外,它是基于 Groovy 的,所以显然你只需要添加一个 jar 文件,以及代码顶部的“@Typed”注释。
此外,它还添加了新功能,例如“GrUnit”,并允许混合动态和静态类型,我希望这将允许创建 DSL。因此它允许与现有的 Groovy 代码混合,并与 Grails 一起使用。
这个项目看起来很年轻,但确实很有前途。我已经在试水了,看看我能走多远。
所以,这个答案实际上并没有说明如何将 Groovy 转换为 Java,但您可以获得更好的东西:两个世界以及可选的第三世界的好处——没有双关语:-)——静态类型和性能。