程序结构
原创大约 1 分钟
package和import
Groovy中使用package
和import
的方法与Java完全一样,而且Groovy默认就已经导入了下面这些常用的包,提高开发效率。
import java.lang.*
import java.util.*
import java.io.*
import java.net.*
import groovy.lang.*
import groovy.util.*
import java.math.BigInteger
import java.math.BigDecimal
Groovy也可以使用静态导入的方式,但它可以指定别名
> import static java.lang.Boolean.TRUE as TR
> import static java.util.Calendar.getInstance as now
> import static java.lang.Math.*
> println(TR)
true
> println(now().class == Calendar.getInstance().class)
true
> println(sin(0) == 0.0)
true
> println(cos(0) == 1.0)
true
脚本类
Groovy有一种叫做Script class
(脚本类
)的东西,它会做一些自动编译的工作。
class Main {
static void main(String... args) {
println 'Groovy world!'
}
}
// 这一句和上面的代码完全等效
println 'Groovy world!'
// 脚本类将会将它编译成下面这样代码再执行
import org.codehaus.groovy.runtime.InvokerHelper
class Main extends Script {
def run() {
println 'Groovy world!'
}
static void main(String[] args) {
InvokerHelper.runScript(Main, args)
}
}
也可以在脚本中定义方法,并且通过方法名来动态执行方法,效果类似于Java的反射。
int fib1(int n) {
n < 2 ? 1 : fib1(n-1) + fib1(n-2)
}
// 或者用def来代替int,效果一样
def fib2(int n) {
n < 2 ? 1 : fib2(n-1) + fib2(n-2)
}
> println(fib1(10) == 89)
true
> println(fib2(10) == 89)
true
// 另一种调用方法的方式
> def i = 10
> println("${fib2(i)}" == 89)
true
感谢支持
更多内容,请移步《超级个体》。