Hallo,
ich bin gerade dabei, ein API zu schreiben, das mir beliebige Objekte auf eine bestimmte Art in Dateien speichert und wieder ausliest.
Bei mehrdimensionalen Arrays habe ich da ein kleines Problem. Und zwar weiß ich nicht, wie man aus den Informationen, die einem beim Auslesen der Datei zur Verfügung stehen, wieder exakt das Ursprungsarray erzeugen kann.
Es gibt zwar eine statische Methode newInstance in der Klasse java.lang.reflect.Array, diese kann allerdings scheinbar nur Arrays mit fest definierten Dimensionsgrößen erzeugen (zB. ein Array 3x2).
Beispiel:
Was mir allerdings nicht gelingen will, ist ein Array mit asymmetrischer Größe zu rekonstruieren.
Beispiel:
Natürlich könnte ich die Maximale Größe ermitteln (3x3x4), aber das Ergebnis währe dann nicht mehr das Gleiche wie das ursprüngliche Objekt.
Auch will ich keine ArrayList, Vector o.ä. verwenden, es soll exakt das ursprüngliche Array herauskommen.
Kann mir da jemand weiterhelfen?
Danke im Voraus :wink:
ich bin gerade dabei, ein API zu schreiben, das mir beliebige Objekte auf eine bestimmte Art in Dateien speichert und wieder ausliest.
Bei mehrdimensionalen Arrays habe ich da ein kleines Problem. Und zwar weiß ich nicht, wie man aus den Informationen, die einem beim Auslesen der Datei zur Verfügung stehen, wieder exakt das Ursprungsarray erzeugen kann.
Es gibt zwar eine statische Methode newInstance in der Klasse java.lang.reflect.Array, diese kann allerdings scheinbar nur Arrays mit fest definierten Dimensionsgrößen erzeugen (zB. ein Array 3x2).
Beispiel:
Code:
package test;
import java.lang.reflect.Array;
public class Beispiel1 {
public static final void main (String[] params) {
String[][] ursprungsArray = new String[][] {
{"eins", "zwei"},
{"drei", "vier"},
{"fünf", "sechs"}
};
// ... Arraygröße, Inhalt etc. aus einer Datei ermitteln
int dims[] = new int[]{3, 2};
// String Array mit der richtigen Größe erzeugen:
Object oNew = Array.newInstance (String.class, dims);
// ... Array füllen ...
}
}
Was mir allerdings nicht gelingen will, ist ein Array mit asymmetrischer Größe zu rekonstruieren.
Beispiel:
Code:
package test;
public class Beispiel2 {
public static final void main (String[] params) {
String[][][] ursprungsArray = new String[][][] {
{
{"eins", "zwei"},
{"drei", "vier", "fünf"},
{"sechs"}
},
{
{"sieben"},
{"acht", "neun"}
},
{
{"zehn", "elf", "zwölf", "dreizehn"}
}
};
// ???
}
}
Natürlich könnte ich die Maximale Größe ermitteln (3x3x4), aber das Ergebnis währe dann nicht mehr das Gleiche wie das ursprüngliche Objekt.
Auch will ich keine ArrayList, Vector o.ä. verwenden, es soll exakt das ursprüngliche Array herauskommen.
Kann mir da jemand weiterhelfen?
Danke im Voraus :wink: