2 Stimmen

Java - Casting, Generics, Objekte und Arrays

Ich frage mich, ob es möglich ist, ein Object in etwas anderes umzuwandeln.

Ich habe ein Objekt, das eine Reihe von Zahlen in einer zufälligen Reihenfolge enthält, wie z.B. 3, 4, 2, 5, 1 und frage mich, ob ich es in ein int[] umwandeln oder bestimmte Elemente daraus auswählen kann, wie etwa eine Zahl aus der Sequenz?

EDIT: Also etwas von dem Code, den ich habe, lautet:

//Hier sind alle verschiedenen Kombinationen der Zahlen enthalten
ArrayList routePop4 = new ArrayList();
//Dies wählt das erste aus, nur als Test
Object test = routePop4.get(0);

Aber die Idee ist, dass ich durch jedes Element von test iterieren möchte.

2voto

dimo414 Punkte 44554

Ein Objekt kann "eine Reihe von Zahlen" nicht enthalten. Allerdings können viele Unterklassen von Object, wie z.B. alle Collections, "eine Reihe von Zahlen" enthalten, und sie kommen mit einer toArray() Methode, um den Inhalt der Sammlung in ein Array umzuwandeln.

Wenn Sie eine Sammlung haben, aber nur Zugriff darauf als ein Objekt haben, müssen Sie es vor der Verarbeitung korrekt umwandeln:

ArrayList liste = (ArrayList)test;
Integer[] arr = liste.toArray(new Integer[]{});

Es ist im täglichen Java-Programmieren ziemlich selten, tatsächlich mit Variablen zu arbeiten, die als Object umgewandelt werden, wenn Sie das tun, sollte es ein Warnsignal sein, dass Sie möglicherweise etwas falsch machen. Sie können Generics verwenden, um Objekte, die andere Objekte enthalten, generisch zu ermöglichen, wie folgt:

ArrayList liste = new ArrayList();
liste.add(1); // Kann nur ganze Zahlen hinzufügen, liste.add("ein String") würde zur Kompilierungszeit scheitern
int n = liste.get(0); // keine Notwendigkeit zur Umwandlung, wir wissen, dass liste nur Integers enthält

Wenn Sie keine Collection verwenden, müssen Sie wahrscheinlich Ihre eigene erstellen, wie es in Luke Taylors Antwort vorgeschlagen wird. Trotzdem erhalten Sie bessere Antworten, wenn Sie mehr Informationen bereitstellen können, der aktuelle Text Ihrer Frage macht keinen Sinn in einem Java-Kontext.

1voto

jahroy Punkte 21420

Nachdem ich deine Bearbeitung gesehen habe, empfehle ich, Generics zu nutzen.

Wenn du ein ArrayList deklarierst, kannst du angeben, welche Art von Objekten es enthalten wird.

Zum Beispiel, wenn du weißt, dass deine ArrayList Strings enthalten wird, würdest du das machen:

List myList = new ArrayList();

Wenn jedes Element deiner Liste ein Array von Integers ist, würdest du das machen:

List listOfIntegerArrays = new ArrayList();

Dann könntest du jedes Element aus deiner Liste abrufen und es einem Integer-Array zuweisen, so:

Integer[] integerArray = listOfIntegerArrays.get(0);

Dann könntest du über jeden Integer in der Liste iterieren, so:

for (Integer loopInteger : integerArray) {
    System.out.println("Der Wert: " + loopInteger);
}

Weiterführende Informationen zu Generics:

0voto

Luke Taylor Punkte 9203

Sie könnten so etwas tun:

int[] numbersFromObject = new int[yourObject.getAmountOfNumbers()];

// Initialisieren Sie das Array mit Zahlen aus dem Array
for(int i = 0; i < yourObject.getAmountOfNumbers(); i++) {
numbersFromObject[i] = yourObject.getNumber(i);

}

Ich bin mir nicht sicher, welche Methoden Ihr Objekt enthält, aber ich bin sicher, dass Sie sich an das oben Genannte anpassen können.

Ich hoffe, das hilft.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X