@dbac: Hm, ich ich liebe die Collections, weil sie so mächtig sind und man jede Menge lernen kann.
Ich habe mich verhauen? Wo denn? Etwa bei den Array-Klammern?
@Student: 1.4er kein Problem aber ich tue mich etwas schwer mit der 1.5er Dokumentation.
Vielleicht kann mir das ja mal jemand klar machen:
siehe meinem Post. du musst der Methode den ArrayTyp mitgeben damit sie per Reflection den Array erstellen und dann mit den elementen füllen kann.
zu
Code:
public <T> T[] toArray(T[] a)
das ist eine generische Methode. T ist eine Typvariable. das <T> ist sozusagen: "Methode, achtung, eine Typvariable namens T wird hier benutzt". T kann eine beliebige Klass sein. D.h. man gibt der Methode einen Array vom Typ T (z.b. String) und er gibt dir dann den Typ als Array wieder zurück (gefüllt mir der Collection)...
wegen des Erasure + Kompatibilität musst du ein Array vom richtigen Typ erst reinstecken
Code:
public <T> T[] toArray(T[] a)
das erste <T> ist der generische Typ T (gehört zu den Modifiern)
T[] ist der Rückgabetyp der Funktion und T[] a einfach das Argument
ein echter krampf, ich hätte mir auch gewünscht, dass eine
List<Birnen> eine einfache Birnen[] toArray(); haben würde; aber leider geht das wohl nicht...
das mit dem komischen toArray zeugs (ich stimme Bleiglanz zu) stammt daher weil REflections genutzt werden.
Code von toArray()
Code:
public Object[] toArray() {
Object[] result = new Object[size];
System.arraycopy(elementData, 0, result, 0, size);
return result;
}
und von toArray(T[])
Code:
public <T> T[] toArray(T[] a) {
if (a.length < size)
a = (T[])java.lang.reflect.Array.
newInstance(a.getClass().getComponentType(), size);
System.arraycopy(elementData, 0, a, 0, size);
if (a.length > size)
a[size] = null;
return a;
}
wenn die List zufällig leer ist, also zu laufzeit kein einziges Element mehr enthält, dann gibt es real keine Möglichkeit, den Rückgabetyp zu ermitteln...
Oh Oh, Jungs,
Ich gebs ja nur ungern zu aber das ist mir irgendwie ne Nummer zu hoch. Ich bin in Sachen Java noch gruen hinter den Ohren.
Kann mir jemand anfaengerfreundlich sagen wie ich denn nun den Verctor von der einen in die andere Funktion bekommen kann? und dann in der neuen Funktion in ein Array umwandle?
Bitte
Oh Oh, Jungs,
Ich gebs ja nur ungern zu aber das ist mir irgendwie ne Nummer zu hoch. Ich bin in Sachen Java noch gruen hinter den Ohren.
Kann mir jemand anfaengerfreundlich sagen wie ich denn nun den Verctor von der einen in die andere Funktion bekommen kann? und dann in der neuen Funktion in ein Array umwandle?
Bitte