1.变量的定义和赋值
def param type param (param1,param2,param3) = [1,2,3]
//注: 句尾分号可有可无
2.包的导入
import com.a.b //解决命名冲突使用as关键字 import com.a.b.C as AC import com.b.b.C as BC AC ac BC bc
3.数组及循环定义
a.顺序数组: 1..3,1..<5 type IntRange b.离散数组:[1,4,6] as int[] c. for (i in 1..3) {},for (i = 0; i < 10; i++) d.3.times {} e. 3.upto(5) {}
4.空指针及异常判断
a.Object?.exec() b.try { //Todo }catch(ex) {//Todo}
5.用接口封装闭包(单方法接口)
interface Listener { void perform() } def function(Listener listener) { listener.perform() } function ({//Todo} as Listener) //闭包对象将被封装到Listener的perform方法中
对于多方法接口的闭包传递方法(MAP类):
handle = [perform1 : {//Todo},perform2:{//Todo}] function (handle as Listener)
动态调用动态类型
def types = ['ActionListener1','ActionListener2'] def handle = {println it} for (i in types) { handleImpl = handle.asType("com.test.$i") obj."add$i"(handleImpl) }
6.运算符重载
<<: leftShift(other) +: plus(other)
7.switch语句:
switch (state) { case [state1,state2]: break; case state3: break; }
8.动态类型调用
class Man { def sayHello() {//Todo} } class Woman { def sayHello() {//Todo} } function (person) { person.sayHello() }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。