Как в Java одним выражением создать поле с коллекцией (List, Set и т.п.) или Map и заполнить коллекцию начальными значениями (не создавая в классе дополнительных методов/инициализаторов/конструкторов)?
Можно так:
List<String> cars = new ArrayList<String>(Arrays.asList("Volvo", "BMW", "Ferrari"));
Этот способ хорошо работает только с коллекциями, для наполнения Map он подходит с трудом.
А можно взорвать мозг и сделать вот так:
List<String> cars = new ArrayList<String>() {
{
add("Volvo");
add("BMW");
add("Ferrari");
}
};
Map<String, Integer> carRatings = new HashMap<String, Integer>() {
{
put("Volvo", 1);
put("BMW", 2);
put("Ferrari", 3);
}
};
Это вызов анонимного конструктора анонимного субкласса. Оригинал статьи: A bet you don’t know about these in Java!
Комментариев нет:
Отправить комментарий