Groovy面向对象三

        方法

        Groovy方法与其他语言的方法类似。

        方法定义

        方法通过返回类型或者def(无返回)来定义的,方法可以接受任意数量的参数,即使没有明确声明它们的类型,可以使用Java方法的修饰符,如果未指定可见性修饰符,默认为public。Groovy中的方法总是返回值,如果没有return语句,会返回方法中最后一条执行语句的值。
def someMethod() { 'method called' }                           
String anotherMethod() { 'another method called' }             
def thirdMethod(param1) { "$param1 passed" }                   
static String fourthMethod(String param1) { "$param1 passed" }

        命名参数

        与构造函数类似,普通方法也可以通过命名参数来调用,这些参数做为map接收,在方法体中可以像访问普通map一样获取参数值。
def foo(Map args) { "${args.name}: ${args.age}" }
foo(name: 'Marie', age: 1)

        默认参数

        默认参数使参数可选,如果调用方法时未指定参数值就使用默认值,默认参数必须定义在最后面。
def foo(String par1, Integer par2 = 1) { [name: par1, age: par2] }
assert foo('Marie').age == 1

        变长参数

        Groovy支持具有可变数量参数的方法,在变长参数之前,可以定义正常的参数。变长参数还可以使用数组代替变长参数,任何带有数组作为最后参数的方法都被Groovy看作是一种可以接受变长参数的方法。如果传入null做为变长参数,那么参数就是null。此外要注意的是,如果具有变长参数的方法具有重载的方法,在这种情况下,调用方法时,会选择最明确的方法。

//两者等效
def foo(Object... args) { args.length }
assert foo() == 0
assert foo(1) == 1
assert foo(1, 2) == 2

def foo(Object[] args) { args.length }
assert foo() == 0
assert foo(1) == 1
assert foo(1, 2) == 2
//传入null
assert foo(null) == null
//传入数组
def foo(Object... args) { args }
Integer[] ints = [1, 2]
assert foo(ints) == [1, 2]
//方法重载
def foo(Object... args) { 1 }
def foo(Object x) { 2 }
assert foo() == 1
assert foo(1) == 2
assert foo(1, 2) == 1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值