我正在创建一个Groovy项目,我想传递一个方法作为参数,这可能吗?
我有两种方法,基本上做同样的事情,但有一些小差异,每种方法都有不同的属性。
我想通过是否使用' 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()
}
答案 0 :(得分:2)
你可以这样做:
private Operation sendEmail(Order order, Closure builder) {
def payload = builder(order, templateId)
}
然后用:
调用它sendEmail(order, this.&buildPayload)
或者
sendEmail(order, this.&buildSecondPayLoad)
顺便说一句:你真的应该用大写字母开始上课,所以你应该把它叫secondEmailPayLoad
而不是SecondEmailPayLoad
,而不是firstEmailPayLoad