Java lista UnsupportedOperationException
1. Áttekintés
Ebben a gyors bemutatóban egy közöset fogunk megvitatni Kivétel ami akkor fordulhat elő, ha a legtöbb API-val dolgozik Lista megvalósítások - a UnsupportedOperationException.
A java.util.List több funkcionalitással rendelkezik, mint egy közönséges array támogatni tudja. Például csak egy beépített metódushívással ellenőrizhető, hogy egy adott elem van-e a struktúrán belül. Általában ezért kell néha átalakítanunk egy sor a Lista vagy Gyűjtemény.
Bevezetés az alapvető Java-ba Lista végrehajtás - a Tömb lista - kérjük, olvassa el ezt a cikket.
2. UnsupportedOperationException
Ez a hiba gyakran előfordul, amikor használjuk asList () módszer től java.util.A Arrays:
public static List asList (T ... a)
Visszaadja:
- fix méretű Lista mint egy adott méret sor
- az eredetivel megegyező típusú elem sor és annak egy Tárgy
- elemek ugyanabban a sorrendbenmint az eredeti tömbben
- egy lista, ami sorosítható és megvalósítja RandomAccess
Mivel T a varargs, közvetlenül átadhatunk egy tömböt vagy elemeket paraméterként, és a módszer rögzített méretű inicializált listát hoz létre:
Viráglista = Arrays.asList ("Ageratum", "Allium", "Poppy", "Catmint");
Aktuálisat is átadhatunk sor:
Karakterlánc [] virág = {"Ageratum", "Allium", "Poppy", "Catmint"}; List flowerList = tömbök.asList (virágok);
Amióta visszatért Lista fix méretű Lista, nem adhatunk hozzá / távolíthatunk el elemeket.
Kísérlet további elemek hozzáadására okozhat UnsupportedOperationException:
Karakterlánc [] virág = {"Ageratum", "Allium", "Poppy", "Catmint"}; List flowerList = tömbök.asList (virágok); flowerList.add ("Celosia");
Ennek gyökere Kivétel az, hogy a visszaküldött objektum nem valósítja meg a add () művelet, mivel nem ugyanaz, mint a java.util.ArrayList.
Ez egy Tömb lista, tól től java.util.A Arrays.
Egy másik lehetőség ugyanannak a kivételnek az megszerzésével, ha megpróbál eltávolítani egy elemet a kapott listáról.
Másrészről vannak módok a módosítható megszerzésére Lista arra az esetre, ha szükségünk lenne rá.
Egyikük egy Tömb lista vagy bármilyen listát közvetlenül a asList ():
Karakterlánc [] virág = {"Ageratum", "Allium", "Poppy", "Catmint"}; List flowerList = új ArrayList (Arrays.asList (virágok));
3. Következtetés
Összegzésképpen fontos megérteni, hogy több elem hozzáadása egy listához nemcsak változhatatlan listák esetén okozhat problémát.
Mint mindig, a példák teljes forráskódja elérhető a GitHubon.