groovy如何调用java
Groovy 调用 Java 的方法
Groovy 与 Java 天然兼容,可以直接调用 Java 类和方法,无需特殊配置。以下是具体实现方式:
直接调用 Java 类
Groovy 可以直接实例化 Java 类并调用其方法。例如,调用 Java 的 ArrayList:
import java.util.ArrayList
def list = new ArrayList<String>()
list.add("Groovy")
list.add("Java")
println list // 输出: [Groovy, Java]
使用 Java 静态方法
Groovy 可以直接调用 Java 的静态方法。例如,调用 Math 类的方法:
def sqrtValue = Math.sqrt(25)
println sqrtValue // 输出: 5.0
继承 Java 类
Groovy 可以继承 Java 类并重写方法。例如,继承 Thread 类:

class GroovyThread extends Thread {
void run() {
println "Running in Groovy"
}
}
new GroovyThread().start()
实现 Java 接口
Groovy 可以实现 Java 接口。例如,实现 Runnable 接口:
def runnable = new Runnable() {
void run() {
println "Implemented in Groovy"
}
}
new Thread(runnable).start()
使用 Groovy 闭包替代 Java 接口
Groovy 闭包可以自动转换为单方法接口(如 Runnable)。例如:

def runnable = { println "Closure as Runnable" } as Runnable
new Thread(runnable).start()
调用 JavaBean 属性
Groovy 简化了 JavaBean 的访问方式,可以直接通过属性名访问:
// Java 类
public class Person {
private String name;
public String getName() { return name; }
public void setName(String name) { this.name = name; }
}
// Groovy 调用
def person = new Person()
person.name = "Groovy" // 等效于 person.setName("Groovy")
println person.name // 等效于 person.getName()
类型转换
Groovy 支持自动类型转换,例如将 List 转换为 Java 数组:
def list = ['a', 'b', 'c']
String[] array = list as String[]
println array.getClass() // 输出: class [Ljava.lang.String;
使用 Java 注解
Groovy 完全支持 Java 注解。例如,使用 @Override:
class GroovyClass extends SomeJavaClass {
@Override
void someMethod() {
println "Overridden in Groovy"
}
}
注意事项
- Groovy 的动态类型可能导致编译时无法发现的类型错误,建议使用
@CompileStatic注解增强类型检查。 - Groovy 的方法调用默认通过运行时元编程处理,可能与 Java 的静态编译行为略有差异。
- 部分 Java 特性(如匿名内部类)在 Groovy 中通常用闭包替代。






