Speichern von Objekten

Status
Nicht offen für weitere Antworten.

alexki

Mitglied
Hallo,
ich suche eine Möglichkeit in Java Objekte verschiedener Klassen in ein einziges Array zu speichern, da das Array aber nur den Variablentyp einer einzigen Klasse tragen kann, funktioniert das nicht so recht.

Ein Beispiel:

Klasse: Auto
Klasse: Person
Klasse: Liste

Die Idee ist, dass die Klasse "Liste" Objekte sortiert (durch compareTo) unabhängig davon von welcher Klasse die Objekte stammen. (Es ist wichtig, dass Objekte verglichen werden, keine Strings)

Die Klasse "Liste" soll in einem Array ganze Objekte speichern, die sie durch "setObject" sich holt.
Das Array das die Objekte speichert heißt: "listenObject[]"
Jedoch muss ich das "listenObject[]" entweder als Typ "Auto" ODER "Person" deklarieren, daher ist die Liste nicht unabhängig wie ich das eigentlich gedacht hatte.

Gibt es denn keinen Variablentyp der Objekte verschiedener Klassen speichern kann.
Wenn ich als Typ "Object" nehme, bekomme ich nur die Speicheraddresse zu sehen mit der ich nichts anzufangen weiß.

Danke schonmal!
 
S

SlaterB

Gast
Object ist eine Wahl,
was du mit 'bekomme ich nur die Speicheraddresse zu sehen' meinst ist nciht wirklich zu verstehen,
die Bedienung ist aber tatsächlich schwieriger, gerade für Anfänger

--------

falls Person und Auto irgendwas gemeinsam haben, wäre ein gemeinsames Interface praktisch

nur für compareTo nicht unbedingt nötig, vielleicht aber doch abhängig davon, was compareTo für weitere Operation braucht
(z.B. getId()/ getName())
 

alexki

Mitglied
Mit "bekomme ich nur die Speicheraddresse zu sehen" meine ich, dass ich auf die Methoden des Objekts nicht zugreifen kann, also z.B. listenObject[2].compare(listenObject[3]) funktioniert dann nicht, dazu muss ich listenObject entweder als Auto oder Person deklarieren. :(

und bei System.out.println(listenObject[2]) ergibt nur die Speicheradresse des Objekts, was jetzt eigentlich nicht relevant ist
 
S

SlaterB

Gast
stimmt, compareTo gibts für Object nicht,

wenn beide Klassen Comparable implementiert haben,
dann hast du ja schon mal eine Gemeisamkeit gefunden,

erstelle also
ein Comparable[] statt Object[]

> System.out.println(listenObject[2]) ergibt nur die Speicheradresse des Objekts

dabei wird toString() aufgerufen, wenn deine Klasse die implementiert, dann klappt es auch,
da du hier die Speicheradresse bekommst,
nehme ich stark an, dass das bei

Person p = ..;
System.out.println(p);

genauso passiert, oder was wird da ausgegeben?
das wäre also kein Problem des Array bzw. ist so oder so ein Problem
-> toString() überschreiben
 
M

ms@work

Gast
Wie schon erwähnt kannst du entweder ein Interface in Auto und Person implementieren und dies als Array deklarieren.

Andererseits, warum verwendest du nicht gleich java.util.List / java.util.ArrayList.
Dann noch einen Comparator schreiben, der deine compareTo-Funktionalität enthält und mit Collections.sort() erhältst du deine sortierte Liste.
 

alexki

Mitglied
Die Methode Object[2].compare(......) habe ich in den Klassen definiert, trotzdem meint eclipse es gibt die Methode bei den Objects nicht.

Hier ein paar relevante Quelltextauszüge:

Klasse: Liste

Code:
Object Objects[];
Objects = new Object[p_objectCount];
Code:
	void setObject( Object p_object )
	{	Objects[currentObjectCount] = p_object;
		currentObjectCount++;
	}
Code:
compareResult = Objects[j].compare(Objects[j+1]);
An dieser Stelle unterstreicht Eclipse die Methode "compare" und sagt folgendes dazu: "The method compare(Object) is undefined for the type Object."

in der Klasse: Person ist die Methode compare jedoch definiert:
Code:
	int compare( Person p_element )
	{
		return this.getName().compareTo(p_element.getName());
	}


Anscheinend kann man nicht einfach ein Objekt der Klasse "Person" in eine Variable speichern die als "Object" deklariert ist und danach auf die Methoden dieser zugreifen.

danke für deine Bemühungen :D
 
S

SlaterB

Gast
genau, dieses Objekt könnte ja auch ein Auto sein, was dann?

wenn du dir sicher bist, dass es eine Person ist, dann kannst du casten:
Object o = ..;
Person p = (Person) o;

aber was soll das ganze hier? deine compare-Operation akzeptiert ja nur andere Personen zum Vergleich,
wie willst du dann Autos auch vergleichen?......
 
G

Guest

Gast
alexki hat gesagt.:
Die Idee ist, dass die Klasse "Liste" Objekte sortiert (durch compareTo) unabhängig davon von welcher Klasse die Objekte stammen. (Es ist wichtig, dass Objekte verglichen werden, keine Strings)
Wie vergleicht man einen Mercedes mit Angela Merkel? Was muss zuerst in der Liste vorkommen?
 

alexki

Mitglied
@ms@work
Danke, die Lösung probiere ich später aus.

Jedoch war ich dabei meine eigene Sortierlösung zu basteln (bin dabei OOP zu lernen :oops: )

Und da bin ich auf das Problem mit dem Variablentyp "Object" gestossen, der zwar Objekte aller Klassen speichern kann, deren Methoden jedoch nicht kennt (wozu ist Object dann überhaupt gut?). Dazu versuche ich eine Lösung zu finden! :?
 

alexki

Mitglied
Es war gedacht, dass das Objects[] array, entweder mit "Autos" oder mit "Personen" gefühlt ist, nicht gemischt.
Eine dynamische Liste die Objekte aller Art aufnimmt und diese anhand der Methode compare (die in JEDER Klasse vorhanden ist, jedoch verschieden beschrieben ist) vergleicht.
So dass wenn eine neue Klasse z.B. Häuser dazu kommt, ich an der Klasse Liste nichts mehr ändern muss, was der Fall wäre, wenn ich das "Casten" anwenden würde.

Jedoch sehe ich dass ihr schon recht habt, und ich mein Konzept nochmal überdenken sollte. :wink:
 
G

Guest

Gast
alexki hat gesagt.:
Und da bin ich auf das Problem mit dem Variablentyp "Object" gestossen, der zwar Objekte aller Klassen speichern kann, deren Methoden jedoch nicht kennt
Natürlich nicht, denn der dynamische Typ des Objekts, das Du in der Variable speicherst, kann ja zur Kompilierzeit gar nicht festgestellt werden. Woher soll Eclipse wissen, dass Du nur Autos und Personen in der Liste abspeicherst?

alexki hat gesagt.:
(wozu ist Object dann überhaupt gut?)
In Object ist z.B. toString() definiert.
 
G

Guest

Gast
alexki hat gesagt.:
Es war gedacht, dass das Objects[] array, entweder mit "Autos" oder mit "Personen" gefühlt ist, nicht gemischt.
Dann verwende halt Generics.

List<Person> personenListe;
List<Auto> autoListe;
List<Haus> häuserListe;

Wobei die drei Klassen alle Comparable<Self> implementieren müssen. (Self = Person, Auto, Haus)
 
M

ms@work

Gast
JEDE Javaklasse ist vom Typ java.lang.Object.
"vom Typ java.lang.Object" heißt, jede Klasse ist von java.lang.Object abgeleitet.

Also:
Code:
class Person extends Object {
}

... ist dasselbe wie
Code:
class Person {
}

Du musst das natürlich nicht mehr deklarieren, es passiert automatisch.

Darum siehst du auch nicht die compare-Methode in deinem Object-Array, weil Object nunmal keine compareTo-Methode hat.

Da aber deine Klassen (implizit) von java.lang.Object ableiten kannst du sie in einem Object-Array als Element zuweisen.
Und welche Methoden java.lang.Object hat siehst du hier: http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Permanentes speichern von Objekten in einer ArrayList Java Basics - Anfänger-Themen 6
G Problem beim Speichern von Objekten in einer Datei Java Basics - Anfänger-Themen 7
T Daten von Objekten speichern Java Basics - Anfänger-Themen 7
M Speichern von Objekten - Verfügbarkeit bei erneutem Aufruf Java Basics - Anfänger-Themen 3
F Laden und Speichern von Objekten (Autos / Filialen) Java Basics - Anfänger-Themen 4
M Länge eines Arrays als Variable speichern möglich? Java Basics - Anfänger-Themen 14
R Liste in Variable speichern Java Basics - Anfänger-Themen 6
onlyxlia Anzahl Random Zahlen mit Scanner abfragen und in Array speichern Java Basics - Anfänger-Themen 10
G JTree speichern und wieder einlesen Java Basics - Anfänger-Themen 5
P Wie kann ich in meinem Java Programm etwas dauerhaft speichern? Java Basics - Anfänger-Themen 5
P Wie kann ich beispielsweise Speicherstände eines Spiels DAUERHAFT in meinem Programm speichern? Java Basics - Anfänger-Themen 3
J Objekte in JSON speichern?? Java Basics - Anfänger-Themen 1
A Daten aus einer HashMap aus einer DB speichern und mit neuen Werten vergleichen Java Basics - Anfänger-Themen 8
I Bild richtig speichern / Hochkant im File Explorer, nach Upload vertikal Java Basics - Anfänger-Themen 9
I Objekte in ShareProject speichern um später zu nutzen Java Basics - Anfänger-Themen 4
I Passwort in Datenbank speichern um später wieder auszulesen Java Basics - Anfänger-Themen 5
S mehrere TreeSets so speichern, dass man sie miteinander vergleichen kann Java Basics - Anfänger-Themen 1
I Datei (Bild) Drucken und wie Druckeinstellung speichern? Java Basics - Anfänger-Themen 3
I H2 Datenbank starten / Daten in File speichern Java Basics - Anfänger-Themen 25
M Werte in Felder speichern und geordnet ausgeben Java Basics - Anfänger-Themen 8
A CSv.Datei einlesen und die werte in zweidemosional Int Array speichern Java Basics - Anfänger-Themen 9
L Dauerhaftes Speichern einer Eingabe bei einer ArrayList Java Basics - Anfänger-Themen 26
S Eine Variable in einem Array speichern Java Basics - Anfänger-Themen 5
M Mehrere Daten/ Variablen Speichern Java Basics - Anfänger-Themen 9
berserkerdq2 Ich gebe eine ArrayList als List zurück per MEthode, wie kann ich nun aber die ArrayList speichern? Java Basics - Anfänger-Themen 46
I Historisierung - Alter Wert, Neuer Wert... wie speichern? Java Basics - Anfänger-Themen 44
berserkerdq2 Wie datum im default format speichern? Java Basics - Anfänger-Themen 5
M Objekt in einem Objekt speichern Java Basics - Anfänger-Themen 9
J Speichern von zwei Variablen durch Auslesen aus einem Numberfield Java Basics - Anfänger-Themen 2
f3mys Objektwerte in Liste speichern und wieder abrufen Java Basics - Anfänger-Themen 23
I Liste von Infos von einer eigenen Annotation in Liste speichern Java Basics - Anfänger-Themen 0
U Wie ein Attribut von einer Klassenmethode in der Klasse speichern= Java Basics - Anfänger-Themen 2
B Screenshots machen und zwar viele und speichern Java Basics - Anfänger-Themen 12
C XML Datei speichern und laden Java Basics - Anfänger-Themen 18
Marlena Bauer Konsolenausgabe in .txt speichern Java Basics - Anfänger-Themen 6
B JaxB - Property vom Typ Object und LocalDateTime speichern? Java Basics - Anfänger-Themen 0
ansystin Teilerfremde Zahlen ausgeben + Zahlenausgabe speichern Java Basics - Anfänger-Themen 3
J Wert in einer json Datei ändern und speichern Java Basics - Anfänger-Themen 3
C File speichern Java Basics - Anfänger-Themen 5
D String und char in String speichern Java Basics - Anfänger-Themen 5
J Alle .java Dateien von einem Verzeichnis in eine Zip speichern Java Basics - Anfänger-Themen 2
I Werte (u.a. Geldbeträge) in Datenbank speichern und Rundungen? Java Basics - Anfänger-Themen 8
J Problem mit einer Methode, die beliebig viele Objekte in Array speichern soll Java Basics - Anfänger-Themen 6
H Daten aus einer Datei in eine Liste speichern Java Basics - Anfänger-Themen 23
B JaxB - speichern vom Typ "Object" Java Basics - Anfänger-Themen 8
GermanPie Nachrichten Speichern Java Basics - Anfänger-Themen 2
M Objekte in Array speichern und ausgeben Java Basics - Anfänger-Themen 17
C Wo Defaultpfad speichern? Java Basics - Anfänger-Themen 2
M Integer aus aus einer Klasse in andere speichern Java Basics - Anfänger-Themen 12
Dimax stream in string[] speichern Java Basics - Anfänger-Themen 6
H Liste speichern. Was lässt sich verbessern? Java Basics - Anfänger-Themen 7
C Fehler beim Speichern (Build projekt) Java Basics - Anfänger-Themen 42
J Ich brauche Hilfe bei einem Code (Variablen speichern) Java Basics - Anfänger-Themen 29
C Verschiedene Objekte in einer Liste speichern Java Basics - Anfänger-Themen 6
D Input/Output Input von zwei Koordinaten validieren und anschließend Werte speichern Java Basics - Anfänger-Themen 7
N Speichern von Werten in Variablen nach Schließen des Programms Java Basics - Anfänger-Themen 3
I ArrayList - Methode zum Speichern eines Eintrags in einer Datei Java Basics - Anfänger-Themen 17
H Objekt im Array speichern Java Basics - Anfänger-Themen 2
H Objekt als Attribut speichern Java Basics - Anfänger-Themen 11
B Text-Datei nur in Stream speichern und dann ausgeben Java Basics - Anfänger-Themen 3
M JTextField in ArrayList speichern Java Basics - Anfänger-Themen 4
L Nur Bestimmte Werte aus einem Array in ein anderes Speichern Java Basics - Anfänger-Themen 11
S Zweidimensionales Array in ein eindimensionales Array speichern Java Basics - Anfänger-Themen 6
A Wie zwei zahlen in einer Variable speichern? Java Basics - Anfänger-Themen 7
C ResultSet in Array speichern Java Basics - Anfänger-Themen 5
S Byte-Array kann chars speichern? Java Basics - Anfänger-Themen 3
J Kann man files in einer Klasse speichern. Java Basics - Anfänger-Themen 2
B Infos zu Attribute in einer Klasse speichern Java Basics - Anfänger-Themen 3
M Input/Output JTextField Eingabe in String Variable speichern Java Basics - Anfänger-Themen 15
A Kann man eine Methode als Variable speichern und danach noch verändern? Java Basics - Anfänger-Themen 6
D Werte aus einem BinärBaum in einem Array speichern Java Basics - Anfänger-Themen 1
I Datei in Programm speichern Java Basics - Anfänger-Themen 3
A .txt-Datei mit Java speichern Java Basics - Anfänger-Themen 2
M Speichern unter. Java Basics - Anfänger-Themen 11
S Java Daten in Excel speichern Java Basics - Anfänger-Themen 1
S Daten speichern, ohne Datenbank Java Basics - Anfänger-Themen 8
L Objekt aus Textdatei in ArrayList speichern Java Basics - Anfänger-Themen 4
L Kommandozeileneinträge in Array speichern Java Basics - Anfänger-Themen 4
B HTML Code in XML speichern Java Basics - Anfänger-Themen 3
G Benutzereingaben durch Zeilenumbruch trennen und in Array individueller Größe speichern Java Basics - Anfänger-Themen 20
G JTextField per Button speichern und an andere Klasse übergeben Java Basics - Anfänger-Themen 2
Shallty Daten speichern und ändern? Java Basics - Anfänger-Themen 32
R Objekte aus Array als String + kommasepariert speichern Java Basics - Anfänger-Themen 12
N Best Practice Rückgabe eines Terminal Befehls in eine Variable speichern Java Basics - Anfänger-Themen 27
B XML in DB speichern -> Regelkonzept Java Basics - Anfänger-Themen 2
A Einträge aus Tupeln nach Regeln in Liste speichern Java Basics - Anfänger-Themen 8
void19 Methoden Binärbaum Inorder Traversierung in Array speichern Java Basics - Anfänger-Themen 1
X TextField-Inhalt mit Button in .txt-Datei speichern Java Basics - Anfänger-Themen 16
C Methoden Problem beim Speichern von Variablen Java Basics - Anfänger-Themen 1
J Geld speichern und wieder auslesen Java Basics - Anfänger-Themen 10
K Geburtsdaten von Mehreren Personen speichern und Alter ausgeben Java Basics - Anfänger-Themen 11
F Beste Datenstruktur zum Speichern? Java Basics - Anfänger-Themen 1
Dimax Programme ,als Text in MySql speichern Java Basics - Anfänger-Themen 7
C Erste Schritte ArrayIndexOutOfBoundsException beim Speichern im Array Java Basics - Anfänger-Themen 2
D Datei auslesen & Werte in Variable speichern Java Basics - Anfänger-Themen 12
D Erste Schritte Projekt in Ecplise in einer .zip Datei speichern Java Basics - Anfänger-Themen 8
L Speichern und Laden Java Basics - Anfänger-Themen 7
I Projekt als .jar Datei speichern - Bilder werden nicht mehr angezeigt Java Basics - Anfänger-Themen 4
H MouseListener begrenzen und Speichern Java Basics - Anfänger-Themen 1
M Wie kann ich im JAVA-GUI im Textfeld ein Array speichern Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben