04 декабря 2009
Краткая инициализация List в Java
- написал: dark_barker
- 1989
- 3
А знаете ли вы, что методы с произвольным числом параметров (в отличие от c++ удобно реализованные) и класс Arrays даёт нам в Java возможность быстрой инициализации коллекций почти так же удобно, как в каком-нибудь php:годобра.
List<String> list = Arrays.asList("1", "2", "3");А autoboxing (автоматическое преобразование примитивных типов во врапперы и обратно) позволяет то же самое сделать и с примитивами!List<Integer> list = Arrays.asList(1, 2, 3);Чудеса, да и только. В java7 (по слухам) добавят специальные свистелки-перделки для этого. Помимо всякого другого бесполезного - MpaK
- 05 декабря 2009, 21:28
- 0
гык :) я мягко говоря даже ничего не понял, кроме что разные типы у тебя объектов list получаются…
- dark_barker
- 08 декабря 2009, 22:03
- 0
Дело в том, что в Java нельзя инициализировать коллекции, типа того, как например в php
Так всегда и делают, по другому никак. Можно это всё инициализировать в методе каком-нибудь или в конструкторе класса, а можно запихать в static-блок вначале класса, тогда это само при подгрузке класса загрузчиком, но тем не менее этого кода не избежать:
И иногда заёбывает забивать какие-нибудь константные hashmap. Способ описанный мной даёт возможность покороче записать инициализацию коллекиции List, просто пишешь
$map = array("key1"=>"value1","key2"=>"value2");То есть задать предустановленные значения нельзя. Правда, для одного особого объекта — массива — можно вместоint[] array=new int[];
array[1]=1;
array[2]=2;
array[3]=3;написатьint[] array={1,2,3};Чтобы сделать, например, список значений надо руками его забить:List<String> list = new ArrayList<String>();
list.add("1");
list.add("2");
list.add("3");Так всегда и делают, по другому никак. Можно это всё инициализировать в методе каком-нибудь или в конструкторе класса, а можно запихать в static-блок вначале класса, тогда это само при подгрузке класса загрузчиком, но тем не менее этого кода не избежать:
public class Foo
{
private List<String> list = new ArrayList<String>();
public Foo()
{
list.add("1");
list.add("2");
list.add("3");
}
...
}И иногда заёбывает забивать какие-нибудь константные hashmap. Способ описанный мной даёт возможность покороче записать инициализацию коллекиции List, просто пишешь
public class Foo
{
private List<String> list = Arrays.asList("1", "2", "3");
...
}и всё тут. static-метод описываемый как public static <T> List<T> asList(T... a) сам превращает список параметров произвольной длины generic-типа T в коллекцию объектов типа T.Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.
Комментарии:3