传递方法作为参数Groovy

问题描述:

我正在创建一个Groovy项目,我想传递一个方法作为参数是可能的吗?传递方法作为参数Groovy

我有2个方法,基本上做同样的事情,但有一些小的差异,每个都有不同的属性。

我想通过是否使用'buildPayLoad'函数或 'buildSecondPayLoad'发送到我的sendEmail函数。

private Operation sendEmail(Order order) { 
        def payload = buildPayload(order, templateId) 
    } 


    private firstEmailPayLoad buildPayload(Order order, String templateId) { 
      new firstEmailPayLoad(
       templateId, 
       config.fromAddress, 
       order.firstPayLoadProperty, 
       buildEmailDataFirstPayLoad(order) 
      ).validate() 
    } 

    private secondEmailPayLoad buildSecondPayLoad(Order order, String templateId) { 
      new secondEmailPayLoad(
       templateId, 
       config.fromAddress, 
       config.bccAddress, 
       config.otherProperty, 
       order.secondPayLoadProperty 
       buildEmailData(order) 
      ).validate() 
} 

你可以这样做:

sendEmail(order, this.&buildPayload) 

或者

sendEmail(order, this.&buildSecondPayLoad) 

BTW:

​​

然后把它你真的应该大写字母开头的类名信,所以不是secondEmailPayLoad,你应该叫它SecondEmailPayLoad(和firstEmailPayLoad相同)