groovy方法调用

//类的方法调用 可以用闭包代替接口
class Person{
    def name
    def age

    public def getName() {
        return name + "_lin"
    }

    public void setName(def name) {
        this.name = name
    }

    def execute(x,y,z){
        println "$x $y $z"
    }
}

def person = new Person()
person.name = 'groovy'
def str = 'name'
//调用set(name)的四种方式
println person.name
println person.'name'
println person."$str"
println person['name']
//调用原始name的方式
println person.@name
//直接在创建对象时给name 和 age赋值
def person1 = new Person(age: 12,name: 'name')
println person1.name
//调用其中的方法
person1.execute('a',a:'aa','c')

//字符串分割
def str1 = 'org.codehaus.groovy:groovy-all:2.3.11'
def array = str1.split(':')
def (group,name,version) = str1.split(':')
println array
println group
println name
println version


//接口调用 单个接口
interface OnclickListener{
    void onClick(a,b)
}
def fun(OnclickListener listener){
    listener.onClick('hello','lin')
}
fun(new OnclickListener() {
    @Override
    void onClick(a,b) {
        println "$a , $b"
    }
})
OnclickListener listener = {
    j,i->
        println  "$j , $i"
}
fun listener

//接口有多个方法 但是我们只需要实现一个就好
interface TextWatcher{
    void before()
    void doing()
    void after()
}
TextWatcher watcher = {
        println "hello"
} as TextWatcher
def fun1(TextWatcher watcher){
    watcher.doing()
}
fun1(watcher)
<think>好的,我现在需要回答用户的问题:如何在Groovy调用外部方法,并提供示例。首先,我需要回顾用户提供的引用资料,看看有哪些相关信息可以利用。 用户给出的引用[1]是关于在Groovy脚本中调用Spring Boot的Service方法,使用了Binding和GroovyShell。引用[2]和[3]提到了Groovy类成员访问方式及闭包中调用方法,引用[4]则涉及闭包创建接口对象。不过用户的问题更偏向于调用外部方法,可能包括普通方法、静态方法或Spring管理的Bean方法。 首先,我需要整理几种常见的Groovy调用外部方法的情况。比如,直接调用其他Groovy脚本中定义的方法,或者调用Java类中的方法,以及通过Spring上下文获取Bean的方法。根据引用[3],闭包中可以调用同一脚本中的方法,这可能是一个点。而引用[1]中的示例展示了如何通过ApplicationContext来获取Spring管理的Bean,进而调用方法。 接下来,我应该分步骤说明不同的调用方式,并给出相应的代码示例。例如,第一种情况是调用同一脚本中的方法,第二种是调用其他Groovy脚本中的方法,第三种是调用Java静态方法,第四种是调用Spring Bean的方法。每种情况都需要具体的代码示例,确保用户能够理解并应用。 需要注意用户提到的示例是否正确,以及是否符合Groovy的语法规则。例如,在调用其他脚本的方法时,可能需要使用GroovyShell或类加载器来加载脚本。同时,在Spring环境下,如何正确注入ApplicationContext并获取Bean也是关键点。 另外,用户可能对闭包中调用外部方法感兴趣,但根据引用[3],闭包可以直接调用所在脚本的方法,这点可以作为补充说明。不过主要应集中在用户的问题上,即如何调用外部定义的方法,可能需要跨脚本或类的情况。 最后,生成的相关问题需要围绕用户可能的后续疑问展开,比如参数传递、异常处理、性能优化等。这可以帮助用户更深入地理解相关主题。</think>在Groovy调用外部方法可以通过多种方式实现,以下是具体场景和示例: ### 一、调用同一脚本中的方法 ```groovy // 定义方法 def externalMethod() { println "调用了外部方法" } // 直接调用 externalMethod() //输出:调用了外部方法 ``` ### 二、调用其他Groovy脚本中的方法 创建`Utils.groovy`文件: ```groovy class Utils { static String formatText(String str) { return "[处理结果] $str" } } ``` 调用示例: ```groovy // 加载脚本并调用静态方法 def utilsClass = new GroovyClassLoader().parseClass(new File("Utils.groovy")) def result = utilsClass.formatText("测试文本") println result //输出:[处理结果] 测试文本 ``` ### 三、调用Java类方法 创建Java类`MathUtil.java`: ```java public class MathUtil { public static int square(int n) { return n * n; } } ``` Groovy调用示例: ```groovy // 调用静态方法 println MathUtil.square(5) //输出:25 ``` ### 四、调用Spring Bean方法(结合引用[1]) ```groovy // 通过Spring上下文获取Bean def userService = applicationContext.getBean("userService") // 调用Bean方法 def userList = userService.findAllUsers() ``` ### 五、动态脚本调用(结合引用[3][4]) 通过闭包执行外部方法: ```groovy def externalAction = { param -> "处理参数:$param" } // 调用闭包 println externalAction("数据123") //输出:处理参数:数据123 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值