Probeer de volgende code te gebruiken:
List<Integer> list = new List<Integer>();
Ik krijg het volgende foutbericht:
java.util.List
is abstract; kan niet worden geïnstantieerd
Wat betekent dit en waarom kan ik niet initialiseren List
op dezelfde manier als ik een ArrayList
?
Antwoord 1, Autoriteit 100%
In Java, List
is een -interface . Dat wil zeggen, het kan niet direct worden geïnstantieerd.
In plaats daarvan kunt u ArrayList
gebruiken, wat een implementatie is van die interface die een array gebruikt als backing-winkel (vandaar de naam).
Sinds ArrayList
is een soort List
, u kunt het eenvoudig upcasteren:
List<T> mylist = new ArrayList<T>();
Dit staat in contrast met .NET, waar, sinds versie 2.0, List<T>
is de standaard implementatie van de IList<T>
Interface.
Antwoord 2, Autoriteit 16%
List
is een interface, geen betonnen klasse.
Een interface is slechts een reeks functies die een klasse kan implementeren; Het is niet logisch om een interface te instantiëren.
ArrayList
is een betonnen klasse die toevallig deze interface en alle methoden erin implementeert.
Antwoord 3, Autoriteit 15%
Gebruik List<Integer> list = new ArrayList<Integer>();
Antwoord 4, Autoriteit 6%
List
is de interface, geen klasse, zodat het niet kan worden geïnstantieerd. ArrayList
is hoogstwaarschijnlijk wat u zoekt:
ArrayList<Integer> list = new ArrayList<Integer>();
Een interface in Java definieert in wezen een blauwdruk voor de klasse – een klasse die een interface implementeert, moet implementaties bieden van de methoden die de lijst definieert. Maar de daadwerkelijke implementatie is volledig aan de implementatieklasse, in dit geval ArrayList
.
De JDK biedt ook LinkedList
– een alternatieve implementatie die weer voldoet aan de lijstinterface. Het werkt heel anders dan de ArrayList
eronder en als zodanig is het meestal efficiënter bij het toevoegen/verwijderen van items halverwege de lijst, maar voor de overgrote meerderheid van de gebruiksgevallen is het minder efficiënt. En natuurlijk, als je je eigen implementatie wilt definiëren, is dat perfect mogelijk!
Kortom, je kunt geen lijst maken omdat het een interface is die geen concrete code bevat – dat is de taak van de klassen die die lijst implementeren, waarvan ArrayList
verreweg het meest wordt gebruikt ( en met goede reden!)
Het is ook vermeldenswaard dat in C# een List
een klasse is, geen interface – dat is IList
. Hetzelfde principe is echter van toepassing, alleen met verschillende namen.
Antwoord 5, autoriteit 2%
Een List
bestaat niet echt in Java. Het is een interface, een manier om te definiëren hoe een object mag communiceren met andere objecten. Als zodanig kan het nooit worden geïnstantieerd. Een ArrayList
is een implementatie van de List
-interface, evenals een gekoppelde lijst, enzovoort. Gebruik die in plaats daarvan.
Antwoord 6, autoriteit 2%
A List
IN JAVA is een interface die bepaalde kwaliteiten definieert een “lijst” moet hebben. Specifieke lijstimplementaties, zoals ArrayList
Implementeer deze interface en vlees uit hoe de verschillende methoden moeten werken. Wat probeer je te bereiken met deze lijst? Hoogstwaarschijnlijk zal een van de ingebouwde lijsten voor u werken.