传递方法作为参数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
相同)