【Groovy】Groovy 方法调用 ( Groovy 构造函数中为成员赋值 | Groovy 函数的参数传递与键值对参数 | 完整代码示例 )

简介: 【Groovy】Groovy 方法调用 ( Groovy 构造函数中为成员赋值 | Groovy 函数的参数传递与键值对参数 | 完整代码示例 )

文章目录

一、Groovy 构造函数中为成员赋值

二、Groovy 函数的参数传递与键值对参数

三、完整代码示例





一、Groovy 构造函数中为成员赋值


Groovy 类没有定义构造函数 , 但是可以使用如下形式的构造函数 , 为 Groovy 类设置初始值 ;


new 类名(成员名1: 成员值1, 成员名2: 成员值2)



顺序随意 : 成员的顺序随意 , 没有强制要求 , 只需要 成员名 与 成员值对应即可 ;


个数随意 : 成员个数随意 , 可以为所有的属性赋值 , 也可以只为其中的部分属性赋值 ;



如下代码 :


class Student {
    def name
    def age
}
// 实例化 Student 类
// 正常赋值
def student = new Student(name: "Tom", age: 18)
// 颠倒顺序赋值
def student2 = new Student(age: 16, name: "Jerry")
// 只为 name 属性赋值
def student3 = new Student(name: "Jim")
// 打印两个对象的值
println "student : ${student.name} , ${student.age}"
println "student2 : ${student2.name} , ${student2.age}"
println "student3 : ${student3.name} , ${student3.age}"


执行结果为 :


student : Tom , 18
student2 : Jerry , 16
student3 : Jim , null






二、Groovy 函数的参数传递与键值对参数


在 Groovy 的构造函数中 , 可以使用


成员名1: 成员值1, 成员名2: 成员值2


类型的参数 , 这是键值对 map 类型的集合 ;


但是对于普通的函数 , 不能使用上述格式 , 如果出现


变量名1: 变量值1, 变量名2: 变量值2


样式的代码 , 会将上述参数识别为一个 map 集合 ;


定义了一个 Groovy 类 , 其中定义的方法接收 2 22 个参数 ;


class Student {
    def name
    def age
    def printValue(a, b) {
        println "${a}, ${b}"
    }
}


如果使用 student.printValue(a: “Tom”, b: 18) , 就会报错 , 提示只传入了一个 map 集合作为参数 ;


必须使用如下形式 , 才能正确执行 printValue 函数 ;


// 传入的 a: "Tom", b: 18 是第一个参数 , 这是一个 map 集合
// 第二个参数是 "Jerry" 字符串
student.printValue(a: "Tom", b: 18, "Jerry")





三、完整代码示例


完整代码示例 :


class Student {
    def name
    def age
    def printValue(a, b) {
        println "${a}, ${b}"
    }
}
// 实例化 Student 类
def student = new Student(name: "Tom", age: 18)
def student2 = new Student(age: 16, name: "Jerry")
def student3 = new Student(name: "Jim")
// 打印两个对象的值
println "student : ${student.name} , ${student.age}"
println "student2 : ${student2.name} , ${student2.age}"
println "student3 : ${student3.name} , ${student3.age}"
// 下面是错误用法
// a: "Tom", b: 18 参数代表了一个键值对集合 , 执行会报错
// student.printValue(a: "Tom", b: 18)
// 传入的 a: "Tom", b: 18 是第一个参数 , 这是一个 map 集合
// 第二个参数是 "Jerry" 字符串
student.printValue(a: "Tom", b: 18, "Jerry")


执行结果 :


student : Tom , 18
student2 : Jerry , 16
student3 : Jim , null
[a:Tom, b:18], Jerry

image.png


目录
相关文章
|
存储 算法 安全
【算法】Java实现ECC算法
ECC(Elliptic Curve Cryptography)是一种非对称加密算法,基于椭圆曲线数学。与传统的RSA和DSA等算法相比,ECC在相同的安全性下使用更短的密钥长度,提供了更高的加密效率和性能。
1038 0
|
Kubernetes Java Docker
【K8S系列】Pod重启策略及重启可能原因
【K8S系列】Pod重启策略及重启可能原因
1739 0
|
3月前
|
人工智能 运维 监控
日志太多根本看不过来?教你用AI,让日志自己“说人话”!
日志太多根本看不过来?教你用AI,让日志自己“说人话”!
592 0
|
Kotlin
Kotlin中继承、类型转换、Any超类、object关键字详解
Kotlin中继承、类型转换、Any超类、object关键字详解
363 0
|
Java 开发者
Java一分钟之-Groovy与Java混合编程
【6月更文挑战第13天】本文探讨了Groovy与Java的混合编程,强调了Groovy在JVM上的动态特性及其与Java的高兼容性。文章指出,尽管二者可无缝共存,但仍存在类型不匹配、闭包与匿名内部类差异及语法糖导致的问题。为避免这些问题,建议在Groovy中显式指定类型、理解闭包与匿名类的区别,并制定统一编码规范。通过实例展示了Java调用Groovy脚本和Groovy调用Java类的方法,强调理解两种语言特性的重要性,以实现更高效、维护性更强的系统。
480 3
Java一分钟之-Groovy与Java混合编程
|
存储 Java 编译器
Java中serialVersionUID的作用
Java中serialVersionUID的作用
|
Java API Maven
bcprov-jdk15on是什么依赖用在哪里
【6月更文挑战第11天】bcprov-jdk15on是什么依赖用在哪里
6746 3
|
机器学习/深度学习 网络协议 C语言
程序技术好文:网络编程中的SIGPIPE信号
程序技术好文:网络编程中的SIGPIPE信号
377 0
|
缓存 安全 Unix
深入探索Linux中的qemu-ga命令
**QEMU的qemu-ga是虚拟机内的守护进程,提供带外通道管理guest OS,如文件操作、关机、休眠等。它通过virtio-serial通信,特点是安全、高效、灵活。例如,使用`virsh qemu-agent-command`执行虚拟机内部命令。最佳实践包括安装配置agent、设置黑名单、考虑安全和性能、定期备份及利用社区资源。**
|
Linux iOS开发 MacOS
【随手记】maplotlib.use函数设置图像的呈现方式
【随手记】maplotlib.use函数设置图像的呈现方式
227 0