类
新建一个Groovy Class,这个类叫做Person:
class Person {
String name
Integer age
def increaceAge(int year) {
return age + year
}
}
Groovy类、方法、变量默认都是public的
然后新建一个Gradle script,如ObjectStudy去使用上面这个类:
def person = new Person(name: "zhangpan", age: 25)
//无论是直接用.去调用还是调用get/set最终都是去调用get/set
println "the name is ${person.name}, the age is ${person.age}"
println person.increaceAge(10)
打印输出如下:
the name is zhangpan, the age is 25
35
接口
和Java的接口完全一样
Groovy运行时元编程
我们在ObjectStudy.groovy中调用Person类没有的方法,如:
person.cry()
这时候运行就会报错:MissingMethodException
此时我们在Person.groovy中重写invokeMethod方法:
Object invokeMethod(String s, Object o) {
println "the method name is invokeMethod ${s}"
}
再去运行,发现没有报错了,而且打印输出如下:
the method name is invokeMethod cry
我们再添加methodMissing方法:
def methodMissing(String name, Object args) {
println "the method name is methodMissing ${name}"
}
运行,打印输出如下:
the method name is methodMissing cry
为类动态的添加方法:
person.metaClass.cry = {
println "the metaClass cry generated"
}
这时候再运行,打印输出为:
the metaClass cry generated
也能为类动态的添加属性:
person.metaClass.sex = 'male'
println person.sex
打印输出为:
male
喜欢本篇博客的简友们,就请来一波点赞,您的每一次关注,将成为我前进的动力,谢谢!