第三章 gradle自动化构建系列文章 之 Groovy面向对象
< center>
查看 “Android自动化构建系列” 全部文章
- groovy中的类,接口的定义和使用
- groovy中的元编程
groovy中的类的特点:
class Animal {
String name
Integer age
}
//赋值: 在groovy中我们不需要写对应的get set方法,直接可以才有变量:变量值 的方式来对其中的变量进行赋值
def animal = new Animal(name: "dog",age: 2)
//animal.name的方式获取变量的值,其实最终的实现也是 animal.getName()
println "this animal's name is ${animal.name},the animal's age is ${animal.age}"
- groovy 中的类默认集成字 groovyObject ,在这个类中默认实现了getProperty 和 setProperty 方法
- groovy 中的类默认都是public类型的,所有的方法变量默认都是public 类型的
- groovy 中在创建对象的同时可以对变脸进行赋值
- groovy 中对象.变量名 默认调用的是 变量的get方法
groovy 中的面向对象
对于上图的解释就是:
- 运行时编译器首先会去对应的类中查找调用的对应的方法,如果没有找到之后会去metaClass中寻找这个方法
- 如果还是没有找到就会寻找这个类中是否重写了 methodMissing() 这个方法,重写了就会调用这个方法,如果没有找到就会查找是否调用了 invokeMethod() 这个方法
下面举几个例子去理解一下
-
定义Animal类
package veribleclass Animal { String name Integer age }
-
创建对象并测试调用这个对象不存在的方法
def animal = new Animal(name: "dog",age: 2) //调用对象中不存在的一个方法 animal.cry()
-
运行结果为:
- 得到结论,当我们调用一个对象中不存在的方法并且没有重写 methodMissing() 和 invokeMethod() 两个方法的前提下,运行会报错,MissingMethodExcept 对应方法找不到的错误,与java不同的是,groovy方法找不到的报错是在运行时报错的,而java直接编译时就不会通过,可见groovy的运行时还是很强大的