Что такое соглашение для создания экземпляров пользовательских типов?

У меня есть класс под названием 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<>();

Я всегда думал, что прежний стиль был конвенцией? Является ли последний стиль конвенцией?

Ответы

Ответ 1

ArrayList<MatchingLine> matchingLines = new ArrayList<>();

Это новая функция Java 7 под названием diamond operator.

Ответ 2

Как упоминал 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<>();