有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java为什么ResponseEntity<T>是泛型的?

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

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());
}

如果找到模型,则返回该模型;如果未找到,则返回错误字符串消息。情况可能比这更复杂

所以我返回了StringModel类型,它们不能绑定到ResponseEntity的泛型类型

我的问题是为什么spring团队将这个类设计为泛型类型?还是我用错了这个东西


共 (2) 个答案

  1. # 1 楼答案

    当您定义API时,您定义了操作正常时将返回的对象的类型,这是您应该在响应实体的通用类型中使用的对象

    如果要返回不同的类型,可以删除泛型并只返回ResponseEntity,然后向其中添加所需的任何对象

  2. # 2 楼答案

    除其他原因外,Spring的^{}HTTP客户机还返回了ResponseEntity<T>。泛型类型允许客户机代码指定用于解释HTTP响应并获取适当的Java对象作为响应体的类型