Ответ 1
ArrayList<MatchingLine> matchingLines = new ArrayList<>();
Это новая функция Java 7 под названием diamond operator
.
У меня есть класс под названием MatchingLine
public class MatchingLine implements Comparable
{
private String matchingLine;
private int numberOfMatches;
// constructor...
// getters and setters...
// interface method implementation...
}
Я использую этот класс в ArrayList следующим образом:
ArrayList<MatchingLine> matchingLines = new ArrayList<MatchingLine>();
Однако, Netbeans IDE помещает примечание рядом с этим утверждением и говорит:
redundant type arguments in new expression (use diamond operator instead)
и это говорит о том, что я использую -
ArrayList<MatchingLine> matchingLines = new ArrayList<>();
Я всегда думал, что прежний стиль был конвенцией? Является ли последний стиль конвенцией?
ArrayList<MatchingLine> matchingLines = new ArrayList<>();
Это новая функция Java 7 под названием diamond operator
.
Как упоминал Eng, это новая функция Java 7.
Он компилируется не иначе, как полностью объявленный оператор со всеми указанными параметрами типа. Это всего лишь один из способов, с помощью которого Java пытается сократить всю информацию о избыточном типе, которую вы должны ввести.
В заявлении, таком как (только для иллюстрации, Callback лучше всего известен как интерфейс):
Callback<ListCell<Client>,ListView<Client>> cb = new
Callback<ListCell<Client>,ListView<Client>>();
Для читателя совершенно очевидно, что типы находятся в этой очень многословной декларации. На самом деле объявления типов являются чрезмерными и делают код менее читаемым. Итак, теперь компилятор может просто использовать вывод типа в сочетании с алмазным оператором, позволяя вам просто использовать:
Callback<ListCell<Client>,ListView<Client>> cb = new Callback<>();