【Groovy】Groovy 方法调用 ( 使用 对象名.成员名 访问 Groovy 类的成员 | 使用 对象名.‘成员名‘ 访问类的成员 | 使用 对象名[‘成员名‘] 访问类成员 )

简介: 【Groovy】Groovy 方法调用 ( 使用 对象名.成员名 访问 Groovy 类的成员 | 使用 对象名.‘成员名‘ 访问类的成员 | 使用 对象名[‘成员名‘] 访问类成员 )

文章目录

一、使用 对象名.成员名 访问 Groovy 类的成员

二、使用 对象名.'成员名' 访问 Groovy 类的成员

三、使用 对象名['成员名'] 访问 Groovy 类的成员

四、完整代码示例





一、使用 对象名.成员名 访问 Groovy 类的成员


对 对象名.成员名 赋值 , 相当于执行 setter 方法 ;


/**
 * 创建 Groovy 类
 * 在其中定义 2 个成员
 */
class Student {
    def name
    def age
}
// 实例化 Student 类
def student = new Student()
// 对 对象名.成员名 赋值 , 相当于执行 setter 方法
student.name = "Jerry"
student.age = 16


使用 对象名.成员名 访问成员 , 相当于执行 getter 方法 ;


// 使用 对象名.成员名 访问成员 , 相当于执行 getter 方法


执行结果 :


Jerry
16





二、使用 对象名.‘成员名’ 访问 Groovy 类的成员


可以使用 对象名.‘成员名’ 访问 Groovy 类的成员 , 这样写的好处是 , 不用将代码写死 , 在运行时可以自由灵活的决定要访问哪个成员 ;


如 : 从配置文件中获取要访问哪个成员 , 或者从服务器端获取要访问的成员 ;


在 Java 中如果要根据字符串决定要访问哪个成员 , 只能通过反射进行访问 ;



代码示例 :


/**
 * 创建 Groovy 类
 * 在其中定义 2 个成员
 */
class Student {
    def name
    def age
}
// 实例化 Student 类
def student = new Student()
// 对 对象名.'成员名' 赋值 , 相当于执行 setter 方法
student.'name' = "Han"
student.'age' = 32
// 使用 对象名.'成员名' 访问成员 , 相当于执行 getter 方法
println student.'name'
println student.'age'



执行结果 :


Han
32




三、使用 对象名[‘成员名’] 访问 Groovy 类的成员


使用 对象名[‘成员名’] 访问 Groovy 类的成员 , 相当于调用类的 getAt 方法 , 该方法的函数原型如下 :


 

/**
     * 允许使用下标运算符查找动态属性值
     * <code>bean[somePropertyNameExpression]</code>。
     * groovy的常规属性表示法更简洁,
     * 但只适用于编译时已知的属性名。
     *
     * @param self     访问的对象
     * @param property 访问的属性名称
     * @return 返回属性值
     * @since 1.0
     */
    public static Object getAt(Object self, String property) {
        return InvokerHelper.getProperty(self, property);
    }



代码示例 :


// 对 对象名['成员名'] 赋值 , 相当于执行 setter 方法
student['name'] = "CSDN"
student['age'] = 9
// 使用 对象名['成员名'] 访问成员 , 相当于执行 getter 方法
println student['name']
println student['age']


执行结果 :


CSDN
9





四、完整代码示例


完整代码示例 :


/**
 * 创建 Groovy 类
 * 在其中定义 2 个成员
 */
class Student {
    def name
    def age
}
// 实例化 Student 类
def student = new Student()
// 使用 setter 方法设置成员变量
student.setName("Tom")
student.setAge(18)
// 使用 getter 方法获取成员值
println student.getName()
println student.getAge()
// 对 对象名.成员名 赋值 , 相当于执行 setter 方法
student.name = "Jerry"
student.age = 16
// 使用 对象名.成员名 访问成员 , 相当于执行 getter 方法
println student.name
println student.age
// 对 对象名.'成员名' 赋值 , 相当于执行 setter 方法
student.'name' = "Han"
student.'age' = 32
// 使用 对象名.'成员名' 访问成员 , 相当于执行 getter 方法
println student.'name'
println student.'age'
// 对 对象名['成员名'] 赋值 , 相当于执行 setter 方法
student['name'] = "CSDN"
student['age'] = 9
// 使用 对象名['成员名'] 访问成员 , 相当于执行 getter 方法
println student['name']
println student['age']
println student.getAt("age")



执行结果 :


Tom
18
Jerry
16
Han
32
CSDN
9
9


image.png

目录
相关文章
|
6月前
|
存储 编译器 程序员
【C++】类与对象(一)类的定义 访问限定符 类的实例化 this指针
【C++】类与对象(一)类的定义 访问限定符 类的实例化 this指针
|
1天前
|
C++
C++程序中对象成员的引用
C++程序中对象成员的引用
7 2
|
1天前
|
C++
C++程序中的派生类成员访问属性
C++程序中的派生类成员访问属性
9 1
|
6月前
|
C++
45 C++ - 继承中同名成员的处理方法
45 C++ - 继承中同名成员的处理方法
29 0
|
6天前
|
C++
28对象成员的引用
28对象成员的引用
13 0
|
Python
Python面向对象、类的抽象、类的定义、类名遵循大驼峰的命名规范创建对象、类外部添加和获取对象属性、类内部操作属性魔法方法__init__()__str__()__del__()__repr__()
面向对象和面向过程,是两种编程思想. 编程思想是指对待同一个问题,解决问题的套路方式.面向过程: 注重的过程,实现的细节.亲力亲为.面向对象: 关注的是结果, 偷懒.类和对象,是面向对象中非常重要的两个概念object 是所有的类基类,即最初始的类class 类名(object): 类中的代码PEP8代码规范:类定义的前后,需要两个空行 创建的对象地址值都不一样如dog和dog1的地址就不一样,dog的地址为2378043254528dog1的地址为2378044849840 8.类内部操作属性 sel
178 1
Python面向对象、类的抽象、类的定义、类名遵循大驼峰的命名规范创建对象、类外部添加和获取对象属性、类内部操作属性魔法方法__init__()__str__()__del__()__repr__()
|
数据安全/隐私保护 C++
C++类中数据成员要私有
C++类中数据成员要私有
234 0
C#(十六)之C#类中的成员属性 构造函数 析构函数
本篇内容记录了成员属性、构造函数、析构函数的一些基本用法。
267 0
C#(十六)之C#类中的成员属性 构造函数 析构函数
|
Java
Java中父类和接口或接口和接口中出现同名属性或同名同参数方法时,如何区分(全文干货)
Java中父类和接口或接口和接口中出现同名属性或同名同参数方法时,如何区分(全文干货)
413 0