2016-11-25 191 views
2

現在,我需要我的控制器基於業務邏輯返回2個不同類型的對象,所以我的問題是我應該使用是什麼返回類型ResponseEntity <?>和ResponseEntity <Object>和ResponseEntity之間的差異<MyCustomClass>

ResponseEntity <?> 

,或者我應該使用:

ResponseEntity <Object> 

是什麼這個返回類型,我爲什麼要使用之間的區別他們?

是否對Spring控制器返回的JSON做出任何更改?

我在問關於返回類型,而不是輸入參數。

我使用Spring MVC的4

+1

的[之間有什麼區別可能的複製?和對象在Java泛型?](http://stackoverflow.com/questions/678822/what-is-the-difference-between-and-object-in-java-generics) – developer

回答

0

想想這個問題,因爲

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); 
相關問題