现在我需要我的控制器根据业务逻辑返回2种不同类型的Object,所以我的问题是我应该使用
ResponseEntity <?>
或者我应该使用:
ResponseEntity <Object>
返回类型 之间有什么区别?为什么要使用它们?
是否对Spring控制器返回的JSON进行了任何更改?
我询问 返回类型,而不是输入参数。
我使用的是Spring MVC 4.
答案 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);