Kako v Javi pretvorim polje v seznam?
Uporabil sem Arrays.asList()
, vendar se je obnašanje (in podpis) nekako spremenilo od Java SE 1.4.2 (dokumenti so zdaj v arhivu) do 8 in večina fragmentov, ki sem jih našel na spletu, uporablja obnašanje iz 1.4.2.
Na primer:
int[] spam = new int[] { 1, 2, 3 };
Arrays.asList(spam)
V mnogih primerih bi ga bilo mogoče zlahka odkriti, vendar se včasih lahko izmuzne neopaženo:
Assert.assertTrue(Arrays.asList(spam).indexOf(4) == -1);
V vašem primeru zato, ker ne morete imeti seznama primitivne vrste. Z drugimi besedami, List<int>
ni mogoč.
Lahko pa imate List<Integer>
z uporabo razreda Integer
, ki vsebuje primitivni tip int
. Svoje polje pretvorite v List
z uporabno metodo Arrays.asList
.
Integer[] spam = new Integer[] { 1, 2, 3 };
List<Integer> list = Arrays.asList(spam);
Oglejte si to kodo, ki je bila v živo izvedena na IdeOne.com.
Težava je v tem, da so bili varargs uvedeni v Javi5 in na žalost je bil tudi Arrays.asList()
preobremenjen z različico vararg. Tako prevajalnik Java5 razume Arrays.asList(spam)
kot parameter vararg za polja int.
Ta težava je podrobneje razložena v knjigi Effective Java 2nd Ed., poglavje 7, točka 42.