在Java中使用<>和不使用它之间有什么区别?

时间:2018-07-17 12:04:16

标签: java

我有一段这样的代码:

@RequestMapping(value = "/find/{id}")
@GetMapping
public ResponseEntity<QuestionModel> find(@PathVariable("id") Long id) {
    Question question = questionService.find(id);
    QuestionModel questionModel = new QuestionModel(question);
    **return new ResponseEntity<>(questionModel, HttpStatus.OK);**
}

我想知道那个与这个之间的区别:

@RequestMapping(value = "/find/{id}")
@GetMapping
public ResponseEntity<QuestionModel> find(@PathVariable("id") Long id) {
    Question question = questionService.find(id);
    QuestionModel questionModel = new QuestionModel(question);
    **return new ResponseEntity(questionModel, HttpStatus.OK);**
}

1 个答案:

答案 0 :(得分:0)

如果您不使用任何<...>,则将使用原始类型。您应该从不使用原始类型,泛型是更安全的使用方式,并且可以防止由于编译器知识的增加而导致更多的错误。 Java仅出于向后兼容的原因 仍支持它。参见What is a raw type and why shouldn't we use it?

使用<>(菱形运算符)代替<Foo>(写出来)只是语法上的方便。编译器将钻石运算符替换为完全写出的类型(与 Java 10 中的var相同)。参见What is the point of the diamond operator in Java 7?

// Are the same
List<Integer> values = new ArrayList<Integer>();
List<Integer> values = new ArrayList<>();

// Raw types, don't use if > Java 5
List values = new ArrayList();
// Assigning a raw-type to a generic variable, mixing both, don't use
List<Integer> values = new ArrayList();