Du kan använda v.toArray(new Integer[v.size()]). Går att göra även om den inte är deklarerade som Vector<Integer>, även om du säkert får lite varningar av det.
Jag vill inte göra "new Integer" då jag vill hålla det generellt. Jag vill isåfall använda Integer.class men lyckas inte skapa en array utifrån Integer-kassen.
Grävde fram en lösning men den använder Reflection och är kanske inte helt optimalt. Det blir generellt men jag har förstått att man inte ska använda Reflections i onödan.
import java.lang.reflect.Array;
// Förutsätt en Vector v innehållande objekt av klassen c
Object myArray = Array.newInstance(c, v.size());
v.toArray((Object[])o);
Tar gärna emot en lösning (om den öht existerar, jag tror inte det) utan reflect. Tills dess markerar jag tråden ändå som löst.
Rent tekniskt är det exakt det som händer när du använder dig av den generiska varianten av Vector. Om du deklarerar Vector<Integer> så kommer toArray() att returnera en Integer[]. Det som händer är att toArray anropar just den koden du har skrivit men även konverterar den till en Integer[].
Du bör inte "gissa" vad det är för typ av objekt som du får från en vector. Då är det bättre att skapa flera getter-metoder som returnerar olika saker, t.ex. en som returnerar Number[], en som returnerar Double[] och en som returnerar Integer[] och beroende på vad du vill göra med det du får ut, så får du anropa rätt metod.
259 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25