返回类型ResponseEntity <! - ? - >和ResponseEntity <object>和ResponseEntity <mycustomclass>之间有什么区别?

时间:2016-11-25 07:01:44

标签: java spring controller

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

ResponseEntity <?>

或者我应该使用:

ResponseEntity <Object>

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

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

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

我使用的是Spring MVC 4.

1 个答案:

答案 0 :(得分: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);