为什么responseentity< t>是泛型的?

hsvhsicv  于 2021-07-14  发布在  Java
关注(0)|答案(2)|浏览(874)

想象一下这个简单的控制器方法:

public ResponseEntity<?> findById(@Parameter(description = "id") @PathVariable String id) {

    Optional<Model> model = repository.findById(id);
    if(model.isEmpty()) {
        return ResponseEntity.status(HttpStatus.NOT_FOUND)
                .body("Model not found");
    }

    return ResponseEntity.status(HttpStatus.OK)
            .body(model.get());
}

如果找到模型,则返回模型;如果没有,则返回错误字符串消息。情况可能比这更复杂。
所以我要退一张票 String 或者 Model 类型,无法绑定到的泛型类型 ResponseEntity .
我的问题是为什么spring团队将这个类设计为泛型类型?还是我用错了这个东西?

qacovj5a

qacovj5a1#

除其他原因外, ResponseEntity<T> 也是Spring的归来 RestTemplate http客户端。泛型类型允许客户机代码指定应用于解释http响应的类型,并获取适当的java对象作为响应主体。

tyky79it

tyky79it2#

定义api时,定义了在操作正常时将返回的对象的类型,这是应该在响应实体的泛型类型中使用的对象。
如果要返回不同的类型,可以删除泛型并只返回responseentity,然后向其中添加所需的任何对象

相关问题