ich hab ein Object Array , hier 2 Methoden daraus:
Java:
publicObjectgetKeyValue(){return keyValue;}publicObjectgetKeyValueIndex(int index){assert(index >=0&& index<=size):"Index muss >=0 sein und max. so groß wie das Array sein!";Object o1 = array[index].getKeyValue();return o1;}
warum sagt er mir dauernd cannot find symbol - method getKeyValue() ? Ich arbeite mit BlueJ
Dein getKeyValue hat nichts mit der (uns unbekannten) Klasse von Array zu tun.
(ist ja der Sinn in Java, dass der selbe Methodenname für unterschiedliche Klassen definiert werden kann.)
Für die Klasse array[] ist er offensichtlich nicht definiert.
aber wie soll ich denn sonst mittels eines index auf ein Array zugreifen und den dortigen KeyWErt zurueckgeben?
hier mein java code :
Java:
/**
* Konstruktor für Objekte der Klasse Array
*/publicObjectArray(int maxSize){assert(maxSize >0):"Array Groesse darf nicht <=0 sein!";
array =newObject[maxSize];this.maxSize = maxSize;this.size = size;}/**
* Fuegt ein Objekt in das Array ein.
*
* @param Object keyValue
* @return
*/publicvoidinsert(Object keyValue){assert(keyValue!=null):"Objekt darf nicht leer sein!";
array[size++]= keyValue;}publicintgetSize(){return size;}publicintmaxSize(){return maxSize;}publicObjectgetKeyValue(){return keyValue;}publicObjectgetKeyValueIndex(int index){assert(index >=0&& index <=size):"Index muss >=0 sein und max. so groß wie das Array sein!";return array[index].getKeyValue();}/**
* Methode um zu uebergebenem Index das entsprechende Objekt zurueckzugeben.
*
* @param int index (Index)
* @return Object (Rueckgabe ist ein Objekt)
*/publicObjectgetIndexObject(int index){assert(index >=0&& index < array.length):"Index muss >= 0 sein und im Array-Bereich liegen!";return array[index];}/**
* Ein Beispiel einer Methode - ersetzen Sie diesen Kommentar mit Ihrem eigenen
*
* @param y (Beschreibung des Parameters)
* @return (Beschreibung des Rückgabewertes)
*/publicObjectgetKeyValue(int index){assert(index >=0&& index < array.length):"Index muss >= 0 sein und im Array-Bereich liegen!";return array[index];}publicStringtoString(){StringBuilder sb =newStringBuilder();for(int i =0; i< size; i++){
sb.append("Objekt Nr.: "+i+"\tKey-Wert: "+array[i]);}return sb.toString();}}
array[index] ist irgendwas, was genau kann man ohne den Typ des Arrays aber nicht wissen,
wenn es ein Object[] ist, dann kommt Object zurück, egal welches konkrete Objekt es ist, dann muss man erst casten
vergleichbar mit
Java:
Object o ="";
o.substring(...);// String-Methode zunächst nicht da
ok danke aber kann es auch sein, dass wenn man zB ein abstrakten Datentyp, z.B Auto in das array packt und dann array[0] zurueckgibt, bekommt man doch nicht die Werte des Autos zurueck, sondern Klassenname@Speicheradressse , was macht man dann?
die untere Methode wollte ich ja eben verbessern, aus oben genannten Gründen^^
ok danke aber kann es auch sein, dass wenn man zB ein abstrakten Datentyp, z.B Auto in das array packt und dann array[0] zurueckgibt, bekommt man doch nicht die Werte des Autos zurueck, sondern Klassenname@Speicheradressse , was macht man dann?
die untere Methode wollte ich ja eben verbessern, aus oben genannten Gründen^^
bekommt man doch nicht die Werte des Autos zurueck, sondern Klassenname@Speicheradressse , was macht man dann?
die untere Methode wollte ich ja eben verbessern, aus oben genannten Gründen
Nein, du bekommst schon das konkrete Objekt zurück, nur hast du darauf (bei dir) die Object Sicht. Das heißt du kannst auf alle Methoden und öffentlichen Variablen von Object zugreifen.
Wenn du das Objekt auf einen speziellieren Typ castest kannst du auch auf dessen Methoden zugreifen:
Java:
Object s ="";
s.substring(...);// geht nichtString s1 =(String) s;
s1.substring(...);// geht
hm ok
ich hab in das array ein int , ein string und ein Professor Datentyp mit Name, Gehalt und VOrlesung gepackt und er gibt mir tatsächlich alles korrekt , sogar mit den einzelnen Professorwerten zurueck.
Liegt das daran dass ich in der Professor Klasse eine .toString Methode definiert habe die eben diese Werte zurueckgibt, und er im Objekt array - wenn er den Professor zurueckgibt - automatisch die toString() Methode von Professor aufruft?
oder wie kommt es dass nicht sowas zurueckgegeben wird wie Professor@93328939f ???
ich hab in das array ein int , ein string und ein Professor Datentyp mit Name, Gehalt und VOrlesung gepackt und er gibt mir tatsächlich alles korrekt , sogar mit den einzelnen Professorwerten zurueck.
Du hast das hoffentlich nicht in ein Array gepackt, sondern in eine Klasse formuliert.
Und mehrere dieser Klassen kannst du dann in ein Array packen.
Und von jedem Objekt gibts genau 1(!) methode toString().
Entweder eine von dir definierte (@override), oder die letzte darüber liegende.
(Die gibt halt für Arrays oder Objekte nur den Speicherort zurück)
Du hast das hoffentlich nicht in ein Array gepackt, sondern in eine Klasse formuliert.
Und mehrere dieser Klassen kannst du dann in ein Array packen.
Und von jedem Objekt gibts genau 1(!) methode toString().
Entweder eine von dir definierte (@override), oder die letzte darüber liegende.
(Die gibt halt für Arrays oder Objekte nur den Speicherort zurück)