有 Java 编程相关的问题?

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

java返回类型ResponseEntity<?>和ResponseEntity<Object>和ResponseEntity<MyCustomClass>

现在我需要我的控制器根据业务逻辑返回两种不同类型的对象,所以我的问题是我应该使用

ResponseEntity <?>

或者我应该使用:

ResponseEntity <Object>

返回类型之间有什么区别?为什么要使用它们

它是否对Spring控制器返回的JSON进行了任何更改

我问的是返回类型,而不是输入参数

我使用SpringMVC4


共 (1) 个答案

  1. # 1 楼答案

    把这个问题想成

    ResponseEntity<?>
    

    相当于

    ResponseEntity<? extends Object>
    

    SomeClass<String>的实例与SomeClass<?>匹配,但与SomeClass<Object>不匹配

    我认为这是一个常见的误解,即在Java中,List不是List的子类型,而String[]实际上是Object[]的子类型。 这就是泛型和数组不能很好地混合的原因之一。Java中的数组是协变的,泛型不是,它们是不变的

    总之,您可以使用ResponseEntity<?>并在控制器中使用它,如下所示

    if (somecondition)
        return new ResponseEntity<Success>(HttpStatus.OK);
    else
        return new ResponseEntity<Error>(HttpStatus.CONFLICT);