2015-03-18 3 views
2

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

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

Я люблю стенографии, которая была по линиям:

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

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

+1

Часто вы объявите переменную типа, чтобы быть 'interface' типа, но создать его экземпляр с реальный класс, например 'Map > = new HashMap <>();'. Таким образом, правая часть равенства _needs_ должна иметь экземпляр класса. – GriffeyDog

+0

@pbabcdefp Действительно, обновил мой комментарий. – GriffeyDog

ответ

8

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

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(); 

Для дальнейшего чтения, вы можете проверить раздел на типа умозаключений и Инстанцирование от общих классов в Type Inference documentation.

+0

Любите подсказку в Гуваве! (Я должен держать его в J6, так что это хорошо работает) –

2

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

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

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

Map<Integer, List<ActivityRecord>> days = Maps.newHashMap(); 
Смежные вопросы