【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
Java初学者作业——完成对已定义类(Admin)的对象的创建。并完成属性的赋值和方法的调用。
Java初学者作业——完成对已定义类(Admin)的对象的创建。并完成属性的赋值和方法的调用。
301 0
Java初学者作业——完成对已定义类(Admin)的对象的创建。并完成属性的赋值和方法的调用。
|
1月前
|
设计模式 开发者 Python
Python类里引用其他类
Python类里引用其他类
|
6月前
|
存储 Java
Java中带返回值方法的定义与调用技术
Java中带返回值方法的定义与调用技术
94 1
|
6月前
|
Java
【Java方法重载】 定义,使用,理解,示例解读
【Java方法重载】 定义,使用,理解,示例解读
149 0
|
6月前
|
Java 数据处理
【Java形参实参】在方法内如何使用?★ 外带简单及复杂例子参考
【Java形参实参】在方法内如何使用?★ 外带简单及复杂例子参考
153 0
|
6月前
|
Java 程序员
java8新特性之--函数式接口加方法引用与构造器引用详细讲解
java8新特性之--函数式接口加方法引用与构造器引用详细讲解
56 0
|
监控 Java 容器
字节码编程,Javassist篇二《定义属性以及创建方法时多种入参和出参类型的使用》
在上一篇 「Helloworld」 中,我们初步尝试使用了 Javassist字节编程的方式,来创建我们的方法体并通过反射调用运行了结果。大致了解到创建在使用字节码编程的时候基本离不开三个核心类;ClassPool、CtClass、CtMethod,它们分别管理着对象容器、类和方法。但是我们还少用一样就是字段;CtFields,在这一章节中我们不止会使用字段,还会创建多个不同入参类型和返回值的学习。
393 0
字节码编程,Javassist篇二《定义属性以及创建方法时多种入参和出参类型的使用》
|
Java
Java: 函数式接口双冒号::实现方法引用,传递方法作为函数参数
Java: 函数式接口双冒号::实现方法引用,传递方法作为函数参数
206 0
|
Java 编译器
第8篇:学习 Java 中的方法(方法的定义、可变参数、参数的传递问题、方法重载、方法签名)通过官方教程
原始参数(eg:int 或 double)通过 value 传递给方法。这意味着对参数值的任何更改仅存在于该方法的作用域内。当方法返回后,栈帧销毁后,参数消失后,对它们的任何更改都将无效。
220 0
第8篇:学习 Java 中的方法(方法的定义、可变参数、参数的传递问题、方法重载、方法签名)通过官方教程
【Groovy】Groovy 方法调用 ( Groovy 构造函数中为成员赋值 | Groovy 函数的参数传递与键值对参数 | 完整代码示例 )
【Groovy】Groovy 方法调用 ( Groovy 构造函数中为成员赋值 | Groovy 函数的参数传递与键值对参数 | 完整代码示例 )
541 0
【Groovy】Groovy 方法调用 ( Groovy 构造函数中为成员赋值 | Groovy 函数的参数传递与键值对参数 | 完整代码示例 )