簡體   English   中英

Java返回兩種不同類型的ResponseEntity

[英]Java return ResponseEntity of two different types

嘗試在 catch 塊中返回錯誤的請求錯誤代碼,否則返回一個集合。 不確定如何設置方法返回類型來處理兩者。

粗略的偽代碼:

public ResponseEntity</*what goes here*/> getCollection() {
    try {
        return ResponseEntity.ok().body(someCollection);
    } catch(SomeException e) {
        return new ResponseEntity<String>(HttpStatus.BAD_REQUEST);
    }
}

簡單地假設我可以設置一個泛型類型來處理這兩種返回類型,我的方法是否不正確?

使用javax.ws.rs.core.Response作為返回類型。 entity可以是 JSON 對象

ResponseBuilder rb = Response.ok(entity);
return rb.build();

同樣,您可以使用正確的錯誤消息在 catch 塊中構建實體 JSON。

或者

通過擴展javax.ws.rs.WebApplicationException創建自定義類。

在你的情況下,我會這樣做:

public ResponseEntity<Object> getCollection() { // -> "Object is added between "<>"
    try {
        return ResponseEntity.ok().body(someCollection);
    } catch(SomeException e) {
        return new ResponseEntity<>(HttpStatus.BAD_REQUEST); // -> "String" is removed between "<>"
    }
}

Object是所有類的父類,Java 具有推斷類型的能力。 由於這種能力, body(someCollection)也將作為ResponseEntity<Object>類型和new ResponseEntity<>(HttpStatus.BAD_REQUEST) body(someCollection)返回。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM