Rohkem
Massiivide konverteerimine loeteluks Java's
Kuidas konverteerida massiivi loeteluks Java's?
Ma kasutasin Arrays.asList()
, kuid käitumine (ja allkiri) kuidagi muutunud Java SE 1.4.2 (dokumendid nüüd arhiivis) 8 ja enamik katkendeid ma leidsin veebis kasutada 1.4.2 käitumist.
Näiteks:
int[] spam = new int[] { 1, 2, 3 };
Arrays.asList(spam)
- 1.4.2 puhul tagastab nimekirja, mis sisaldab elemente 1, 2, 3.
- versioonil 1.5.0+ tagastab nimekirja, mis sisaldab massiivi spam
Paljudel juhtudel peaks seda olema lihtne avastada, kuid mõnikord võib see märkamatult välja lipsata:
Assert.assertTrue(Arrays.asList(spam).indexOf(4) == -1);
948
3
Teie näites on see sellepärast, et teil ei saa olla primitiivse tüübi List. Teisisõnu,
List
ei ole võimalik.Küll aga saab olla
List
, kasutades klassiInteger
, mis ümbritseb primitiiviint
. Konverteerige oma massiiviList
abilArrays.asList
).Vaata seda kood töötab otse IdeOne.com.
Probleem on selles, et varargs võeti kasutusele Java5-s ja kahjuks sai
Arrays.asList()
ka vararg-versiooniga ülekoormatud. Seega mõistab Java5 kompilaatorArrays.asList(spam)
int massiivi vararg parameetrina.Seda probleemi on täpsemalt selgitatud Effective Java 2. väljaande 7. peatüki punktis 42.
peate valama massiivi