有没有办法自动将Groovy转换为Java?

2022-09-01 10:32:40

我继承了大量的Groovy代码,我发现由于以下几个原因很难维护:

  1. 很多时候,很难说出变量的类型。
  2. 推论:很容易修改具有不同类型的变量,而没有意识到这一点。
  3. 许多错误会在运行时之前被发现(如果你的单元测试没有涵盖几乎所有内容,这是可怕的)。
  4. 参数的类型基本上被忽略了。
  5. 我正在使用的IDE(STS Pro)很有用,但远远落后于Java。例如,重构就是不可用。
  6. 建议有时可用,有时不可用。

虽然我很欣赏语言的紧凑性,但维护一直很困难和繁琐。

我试图手动将一些片段转换为Java,这很痛苦。您是否知道任何有助于此转换的工具或插件?


答案 1

IntelliJ IDEA对时髦代码的重构有相当不错的支持。它还具有来自Groovy ->Java的源代码级转换器。大多数情况下,它会生成无法编译的代码,但它可能有助于您开始转换代码的过程。时髦代码:

class HelloWorld {
def name
def greet() { "Hello ${name}" }
int add(int a, int b) {
    return a+b;
}
}

转换后的 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;
}

答案 2

可能不是你想听到的答案,但我会专注于对Groovy更满意,而不是试图将代码转换为Java。在Groovy中你可以做很多事情,这些事情根本无法很好地转换为Java(如闭包)。任何自动转换为Java都会使代码的可读性大大降低,并且更难理解。

如果你不能被说服坚持使用Groovy,并且你必须迁移到Java,那么你最好的选择就是手工完成。


推荐