java params 参数_将params作为参数传递给类扩展方法的函数

我正在尝试将函数作为参数传递给类扩展方法 .

做的时候

fun Router.handleJsonGet(path: String, method: () -> Any) {

this.get(path).handler {

it.response().putHeader("Content-Type", "application/json").end((gson.toJson(method())))

}

}

我可以轻松地在lambda中包装一个函数调用,一切正常 .

router.handleJsonGet("/business/list", { BusinessService.listBusinesses() })

现在我想要包含一个 GET params的 Map ,我就陷入了困境 .

fun Router.handleJsonGet(path: String, method: (any:Any) -> Any) {

this.get(path).handler {

val map: MultiMap = it.request().params() ?: MultiMap.caseInsensitiveMultiMap()

it.response().putHeader("Content-Type", "application/json").end((gson.toJson(method(map))))

}

}

我现在如何使用此方法扩展?当函数需要参数时,wrap-with-lambda技巧似乎不起作用 .

我期待的是:

router.handleJsonGet("/business/list", BusinessService::listBusinesses)

object BusinessService {

fun listBusinesses(any: Any) : List {

// do something with any as MultiMap

return Business.findAllBusinesss();

}

}

工作,但IntelliJ说类型不匹配

知道我应该如何将一个需要参数的函数传递给类扩展方法以及我应该如何调用它?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值