我目前正在研究某些东西,并且正在考虑是否有更时髦的方法来实现此目的:

if ( reqObj instanceof Order ) {
    params.body = reqObj
}
else if ( reqObj instanceof PaymentRequest ) {
    params.requestContentType = ContentType.JSON
    params.body = reqObj
}
else if ( reqObj instanceof ShipmentRequest ) {
    params.body = reqObj
}
else if ( reqObj instanceof StockLocationRequest ) {
    params.body = reqObj
}
else if ( reqObj instanceof StockItemRequest ) {
    params.body = reqObj
}
else if ( reqObj instanceof StockMovementRequest ) {
    params.body = reqObj
}
else if ( reqObj instanceof ZoneRequest ) {
    params.body = reqObj
}
else{
    params.query = reqObj
}

如您所见,我正在检查一个对象的多个实例,它们执行相同的操作,但是需要检查它们是否是该类的实例,以便它们不执行params.query,也不执行params.body(如果它返回true)。有没有更时髦的方法可以做到这一点?

P.S.我通常会在google中搜索,但对于要搜索的关键字一无所知。

最佳答案

你可以做:

def cls = reqObj.getClass()

if (cls in [Order, PaymentRequest, ]) { //other classess
   params.body = reqObj
} else {
   params.query = reqObj
}

if (cls in [PaymentRequest,]) { // may be instanceof as well
   params.requestContentType = ContentType.JSON
}

也可以使用三元运算符(但是这可能不可读):
(cls in [Order, PaymentRequest,] ? {params.body = reqObj} : {params.query = reqObj})()

if (cls in [PaymentRequest,]) { // may be instanceof as well
   params.requestContentType = ContentType.JSON
}

关于groovy - 检查对象的多个实例时,是否还有一种更时髦的方法来实现if..else if..else?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32218810/

10-10 22:46