【Groovy】Groovy 方法调用 ( Java 类成员及 setter 和 getter 方法设置 | Groovy 类自动生成成员的 getter 和 setter 方法 )

简介: 【Groovy】Groovy 方法调用 ( Java 类成员及 setter 和 getter 方法设置 | Groovy 类自动生成成员的 getter 和 setter 方法 )

文章目录

一、Java 类成员及 setter 和 getter 方法设置

二、Groovy 类自动生成成员的 getter 和 setter 方法





一、Java 类成员及 setter 和 getter 方法设置


创建标准的 Java 类 , 需要将成员变量设置为私有成员 , 并且为其定义 getter 和 setter 方法 ;


class Student {
    private String name
    private int age
    String getName() {
        return name
    }
    void setName(String name) {
        this.name = name
    }
    int getAge() {
        return age
    }
    void setAge(int age) {
        this.age = age
    }
}




二、Groovy 类自动生成成员的 getter 和 setter 方法


在 Groovy 脚本中创建 Groovy 类 , 在其中定义 2 个成员 ;


/**
 * 创建 Groovy 类
 * 在其中定义 2 个成员
 */
class Student {
    def name
    def age
}


在 Groovy 中的类中 , 不需要定义成员变量的 setter 和 getter 方法 , Groovy 会自动生成相关的 getter 和 setter 方法 ;


/**
 * 创建 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()


执行结果 :



         


查看编译后的 Student.class 字节码文件 , 可以看到系统为 Student 类自动生成了 getter 和 setter 方法 ;

image.png


完整的字节码类如下 :


//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//
import groovy.lang.GroovyObject;
import groovy.lang.MetaClass;
import groovy.transform.Generated;
import groovy.transform.Internal;
import org.codehaus.groovy.runtime.callsite.CallSite;
public class Student implements GroovyObject {
    private Object name;
    private Object age;
    @Generated
    public Student() {
        CallSite[] var1 = $getCallSiteArray();
        super();
        MetaClass var2 = this.$getStaticMetaClass();
        this.metaClass = var2;
    }
    @Generated
    @Internal
    public MetaClass getMetaClass() {
        MetaClass var10000 = this.metaClass;
        if (var10000 != null) {
            return var10000;
        } else {
            this.metaClass = this.$getStaticMetaClass();
            return this.metaClass;
        }
    }
    @Generated
    @Internal
    public void setMetaClass(MetaClass var1) {
        this.metaClass = var1;
    }
    @Generated
    public Object getName() {
        return this.name;
    }
    @Generated
    public void setName(Object var1) {
        this.name = var1;
    }
    @Generated
    public Object getAge() {
        return this.age;
    }
    @Generated
    public void setAge(Object var1) {
        this.age = var1;
    }
}
目录
相关文章
|
5天前
|
Java 调度
Java并发基础-线程简介(状态、常用方法)
Java并发基础-线程简介(状态、常用方法)
13 0
|
2天前
|
Arthas 存储 监控
性能监控之常见 Java Heap Dump 方法
【6月更文挑战8天】性能监控之常见 Java Heap Dump 方法
23 7
|
3天前
|
存储 安全 Java
深入理解Java中的ThreadLocal机制:原理、方法与使用场景解析
深入理解Java中的ThreadLocal机制:原理、方法与使用场景解析
13 2
|
4天前
|
Java
Java读取txt文件和写入txt文件-多种方法-java读写文件-java读写
Java读取txt文件和写入txt文件-多种方法-java读写文件-java读写
16 0
|
4天前
|
Java 开发者
Java一分钟之-Groovy与Java混合编程
【6月更文挑战第13天】本文探讨了Groovy与Java的混合编程,强调了Groovy在JVM上的动态特性及其与Java的高兼容性。文章指出,尽管二者可无缝共存,但仍存在类型不匹配、闭包与匿名内部类差异及语法糖导致的问题。为避免这些问题,建议在Groovy中显式指定类型、理解闭包与匿名类的区别,并制定统一编码规范。通过实例展示了Java调用Groovy脚本和Groovy调用Java类的方法,强调理解两种语言特性的重要性,以实现更高效、维护性更强的系统。
34 3
Java一分钟之-Groovy与Java混合编程
|
5天前
|
Java
guava Splitter 与java 内置的string的split 方法的区别
guava Splitter 与java 内置的string的split 方法的区别
7 0
|
5天前
|
设计模式 Java 测试技术
Java8实战-默认方法
Java8实战-默认方法
6 2
|
5天前
|
存储 Java 测试技术
滚雪球学Java(58):玩转Java中的ArrayList:常用操作技巧和方法总结
【6月更文挑战第12天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
6 0
滚雪球学Java(58):玩转Java中的ArrayList:常用操作技巧和方法总结
|
7天前
|
存储 缓存 Java
Java遍历Map集合的方法
在Java中,遍历Map集合主要有四种方式:1) 使用`keySet()`遍历keys并用`get()`获取values;2) 使用`entrySet()`直接遍历键值对,效率较高;3) 通过`Iterator`遍历,适合在遍历中删除元素;4) Java 8及以上版本可用`forEach`和Lambda表达式,简洁易读。`entrySet()`通常性能最佳,而遍历方式的选择应考虑代码可读性和数据量。
22 0
|
7天前
|
Java
Java中判断String类型为空和null的方法
Java中判断`String`变量是否为空或`null`需用`== null`和`.isEmpty()`。示例代码提供两种方法:`main`方法直接判断,`safeGetString`方法提供默认值。当输入为`null`或空时,返回默认值。代码包含三个测试案例,分别处理`null`、空字符串和非空非`null`字符串。
27 0