Сокращение определения Java-объекта или ярлыки?

Есть ли более быстрый способ создания экземпляров объектов в Java, когда нет необходимости перепечатывать класс? Например, посмотрите на этот экземпляр:

HashMap<Integer, ArrayList<ActivityRecord>> days = new HashMap<Integer, ArrayList<ActivityRecord>>();

Я хотел бы, чтобы стенография была такой:

HashMap<Integer, ArrayList<ActivityRecord>> days = new();

С другой стороны, я также был бы счастлив с ярлыком Eclipse, который автоматически завершал создание экземпляра для использования конструктора без параметров.

3 ответа

Решение

Если вы используете Java 7 и выше, вы можете использовать оператор diamond:

HashMap<Integer, ArrayList<ActivityRecord>> days = new HashMap<>();

Кроме того, при объявлении переменных рекомендуется использовать интерфейсы, когда это возможно, вместо конкретных классов. Таким образом, вышеприведенное действительно будет:

Map<Integer, List<ActivityRecord>> days = new HashMap<>();

Если вы используете Java 6, вы можете сделать это с помощью Google Guava:

Map<Integer, List<ActivityRecord>> days = Maps.newHashMap();

Для дальнейшего чтения вы можете проверить раздел " Вывод типов" и "Реализация общих классов" в документации "Вывод типов".

Если вы используете Java 6 (или более раннюю версию), то Google Guava вам пригодится

Map<Integer, List<ActivityRecord>> days = Maps.newHashMap();

Вам следует использовать оператор Java 7 diamond, потому что часто вы будете кодировать интерфейс и не будете использовать один и тот же класс для ссылки и экземпляра.

Map<Integer, ArrayList<ActivityRecord>> days = new HashMap<>();
Другие вопросы по тегам