如何处理从控制器发送原始响应实体时"Raw types usage"警告?



我有一个简单的api,它对记录启动一些操作并返回一个200响应:

/**
* Initiate some workflow.
*
* @param recordsBulkInitiate records to initiate
* @return {@link ResponseEntity}
*/
@ApiOperation(value = "initiate workflow")
@PostMapping("/initiate")
public ResponseEntity bulkInitiateRecords(@RequestBody InitiateBulkRecordsDto recordsBulkInitiate) {
workflowService.bulkInitiate(recordsBulkInitiate);
return ResponseEntity.ok(OK);
}
/**
* Submit some workflow action on arecord
*
* @param workflowActionDto the record action data
* @return {@link ResponseEntity}
*/
@ApiOperation(value = "action taken by user")
@PostMapping("/action")
public ResponseEntity submitAction(@RequestBody WorkflowActionDto workflowActionDto) {
log.info("submit action on record [{}]", workflowActionDto);
workflowService.submitRecordAction(workflowActionDto);
return ResponseEntity.ok(OK);
}

Sonarlint和intelllij都会抛出警告:"不应该使用原始类型"。

我该如何处理这个警告?现在,我只使用ResponseEntity<Object>,这似乎是一个hack。

您可以在方法签名返回类型中替换ResponseEntity<?>而不是ResponseEntity:

public ResponseEntity<?> submitAction(@RequestBody WorkflowActionDto workflowActionDto)

您可以避免IDE警告,但它们实际上是相同的,编译器会将其替换为泛型类型,因此ResponseEntity<?>ResponseEntity是相同的。

编辑:

正如我看到的,你返回的是ResponseEntity.ok(HttpStatus.OK),所以你返回的是HttpStatus类型的体。因此,您可以使用ReponseEntity<HttpStatus>在方法签名中更显式。

最新更新