# ArrayList in Array .bin am verzweifeln



## LinXP (2. Dez 2006)

*Hallo,

ich versuche jetzt schon seit einigen Stunden, eine ArrayList in ein Array zu packen. Alles vom Typ int.

Also...*

ich will ein Polygon FREIHAND zeichnen. Dazu lese ich (in der Methode "public void mouseDragged(MouseEvent e)") erstmal die X und Y Werte ein. Diese speichere ich in eine ArrayList, weil ich ja nicht im vorraus weiß, wie groß das Array sein muss bzw. wieviel X und Y Werte eingelesen werden. 
Wenn ich jetzt die Methode "drawPolyline" benutzen will, möchte der als Parameter aber nur Werte vom Typ Array haben und nicht von ArrayList. 


```
private ArrayList korxTmp = new ArrayList(); // ArrayList zur Speicherung von x - Koordinaten
      	 	private ArrayList koryTmp = new ArrayList(); // ArrayList zur Speicherung von y - Koordinaten
      	 	int[] korX = null; // Array für Polygon zeichnen
      	 	int[] korY = null; // Array für Polygon zeichnen             


      	 	korxTmp.add(e.getX()); // X-Werte in die ArrayList speichern
      	 	koryTmp.add(e.getY()); // Y-Werte in die ArrayList speichern
      	 	
      	 	korX = new int[korxTmp.size()]; // grösse des Arrays festlegen
      	 	korY = new int[koryTmp.size()]; // grösse des Arrays festlegen
      	 	
      	 	korX = (int[])korxTmp.toArray(); // ArrayList in Array speichern
```
Bei der letzten Zeile bekomme ich den Fehler "inconvertible types"!
Ich kann ein bisschen Java, bin aber nicht der Crack. Ich hoffe ihr könnt mir weiterhelfen. Ich habe mich schon durch etliche Seiten im Internet gelesen, komme aber nicht weiter. Ich weiß auch, dass in der Javadoku die Methoden...

```
Object[]   toArray()          
<T> T[]   toArray(T[] a)
```
...aufgeführt sind, aber ich versteh nicht, wie ich die genau umsetzten kann. 

Ich hoffe ihr könnt mir helfen....


----------



## Beni (2. Dez 2006)

"Object[]   toArray()" liefert ein Object-Array, das nützt dir nichts.
"<T> T[]   toArray(T[] a) " liefert ein T-Array, wobei T ein Interface oder Klasse sein kann. T kann aber kein primitiver Datentyp sein.
Da es keine weiteren "toArray"-Methoden gibt, kann dir die ArrayList kein "int[]" zurückgeben.

Wenn du noch die generischen Parameter der Liste setzt:

```
private ArrayList<Integer> korxTmp = new ArrayList<Integer>();
```
... kannst du aber die Elemente über eine Schleife auslesen.

```
int[] x = new int[ korxTemp.size() ];
for( int i = 0; i < x.length; i++ )
  x[i] = korxTemp.get( i ).intValue();
```

edit


> Bei der letzten Zeile bekomme ich den Fehler "inconvertible types"!


Inconvertible types: die Typen passen nicht zusammen. Du kannst ein Object[] nicht in ein int[] casten, das wird in jedem Fall schief gehen (deshalb reklamiert der Compiler). Das ist ähnlich, wie wenn du ein Flugzeug in eine Bierflasche casten wolltest, auch da würde der Compiler reklamieren.


----------



## Guest (2. Dez 2006)

... vielen Dank!!!
Ich habe es an mein kleines Programm angepasst. Und es funktioniert.
Vielen Dank nochmals!!! Und noch einen schönen Abend...


----------

