Popis Java UnsupportedOperationException

1. Pregled

U ovom brzom vodiču razgovarat ćemo o uobičajenom Iznimka što se može dogoditi pri radu s nekima od API-ja većine Popis implementacije - UnsupportedOperationException.

A java.util.Popis ima više funkcionalnosti od običnog araj mogu podržati. Na primjer, sa samo jednim ugrađenim pozivom metode, moguće je provjeriti je li određeni element unutar strukture. To je tipično razlog zašto ponekad moramo pretvoriti niz do a Popis ili Kolekcija.

Za uvod u jezgru Jave Popis provedba - ArrayList - molimo pogledajte ovaj članak.

2. UnsupportedOperationException

Česta je pojava ove pogreške kada je koristimo asList () metoda iz java.util.Arrays:

javni statični popis asList (T ... a)

Vraća se:

  • fiksne veličine Popis od veličine datog niz
  • element iste vrste kao onaj u izvorniku niz a to mora biti Objekt
  • elementi u istom redoslijedukao u izvornom nizu
  • popis koji je serializirati i provodi Nasumični pristup

Budući da je T a varargi, možemo proslijediti niz ili stavke izravno kao parametre, a metoda će stvoriti inicijalizirani popis fiksne veličine:

Navesti cvijeće = Arrays.asList ("Ageratum", "Allium", "Mak", "Mačja metvica");

Možemo proći i stvarni niz:

Niz [] cvijeće = {"Ageratum", "Allium", "Mak", "Mačja metvica"}; Popis flowerList = Arrays.asList (cvijeće);

Od vraćenih Popis je fiksne veličine Popis, ne možemo dodavati / uklanjati elemente.

Uzrok bi bio pokušaj dodavanja više elemenata UnsupportedOperationException:

Niz [] cvijeće = {"Ageratum", "Allium", "Mak", "Mačja metvica"}; Popis flowerList = Arrays.asList (cvijeće); flowerList.add ("Celosia");

Korijen ovoga Iznimka je da vraćeni objekt ne implementira dodati() operacija jer nije isto što i java.util.ArrayList.

To je ArrayList, iz java.util.Arrays.

Drugi način za dobivanje iste iznimke je pokušaj uklanjanja elementa s dobivenog popisa.

S druge strane, postoje načini za dobivanje promjenjivog Popis u slučaju da nam zatreba.

Jedan od njih je stvaranje ArrayList ili bilo koji popis izravno iz rezultata asList ():

Niz [] cvijeće = {"Ageratum", "Allium", "Mak", "Mačja metvica"}; Popis flowerList = novi ArrayList (Arrays.asList (cvijeće));

3. Zaključak

U zaključku je važno shvatiti da dodavanje više elemenata na popis može biti problematično za više od nepromjenjivih popisa.

Kao i uvijek, puni izvorni kod primjera dostupan je na GitHub-u.