Klassen Eigene Klasse als Array benutzen

BuffaloBill

Mitglied
Hallo Zusammen
Ich mach gerade meine ersten Schritte in Objektorientierte Programmierung und da hab ich irgendwie so nen Stolperstein. Ich habe eine (relativ Simple) Klasse geschrieben:

Java:
public class Mytable {
	public String Name;
	public void setName(String userName){
		Name = userName;
	}
}
Wie man vieleicht erraten kann soll dies irgendeinmal eine Tabelle werden, aber im Moment ist es nur irgend ein Ding, das eben einen Namen hat.
Nun will ich aber nicht nur eine Tabelle sondern mehrere und natürlich weis ich noch nicht wie viele, sondern ,dies soll zur laufzeit ermittelt werden:
Java:
public class MyDB {
	public String path;
	public Mytable[] Tables;
	public void setPath(String userpath){
		path = userpath;
	}
	public void getTables(){
		int numTables = 10;
		Tables = new Mytable[numTables];
		for (int i=0;i<=numTables;i++){
			Tables[i].setName("My Test");
		}	
	}
}
natürlich soll die Arrygrösse später veränderbar sein, daher die int variable, aber für den anfang zum Debugen geb ich mal einen statischen Wert vor (z.b 10). Ich möchte also hier 10 von meinen vorher definierten Tabellenobjekten haben, die alle "My Test" heissen (ja da kommt dann natürlich auch eine variable rein, aber ich hab ja erst angefangen)

Irgendwie ist das aber doch nicht so eunfach, Java meckert herum wegen der Klasse DDBtable
Java:
com.sun.jdi.ClassNotLoadedException: Type has not been loaded occurred while retrieving component type of array.

Kann man keine Array mit eigenen Ojekten machen?
 
Irgendwie ist das aber doch nicht so eunfach, Java meckert herum wegen der Klasse DDBtable
Java:
com.sun.jdi.ClassNotLoadedException: Type has not been loaded occurred while retrieving component type of array.

Kann man keine Array mit eigenen Ojekten machen?

Ok, du zeigst uns aber nichts von der Klasse
Code:
DDBtable
, aber durch die Exception lässt sich der Fehler ganz einfach erklären!

Ja man kann ein Array mit eigenen Objekten machen.

Java:
public class MyDB {
	public String path;
	public Mytable[] Tables;
	public void setPath(String userpath){
		path = userpath;
	}
	public void getTables(){
		int numTables = 10;
		Tables = new Mytable[numTables];
		for (int i=0;i<=numTables;i++){
			Tables[i].setName("My Test");
		}	
	}
}

So passt es schon, einzig das dir eine NullPointer Exception um die Ohren fliegen wird.
Du hast zwar dein Array initialisiert aber du musst auch für jeden Index ein entsprechendes Objekt der Klasse "Mytable" erstellen.
Desweiteren wenn die Größe des Arrays "variable" sein soll, dann nimm doch stattdessen einfach eine Liste. Dort kannst du jederzeit etwas hinzufügen/entfernen.
 
Du hast zwar dein Array initialisiert aber du musst auch für jeden Index ein entsprechendes Objekt der Klasse "Mytable" erstellen.
Ich dachte genau das wird durch diese Codezeile erledigt:
Java:
 Tables = new Mytable[numTables];
Hier sag ich doch das ich "NumTables" mal ein neues Obekt der Sorte MyTable will?!
Sonst kann ich das natürlich in der for-schlaufe jeweils ein:
Java:
Tables[i] = new Mytable;
Machen, das wäre auch kein Problem....

MyTable ist DDBTable, ich habs nur noch umbenannt, aber offenbar nicht 100% konsequent 🙂
 
Ich dachte genau das wird durch diese Codezeile erledigt:
Java:
 Tables = new Mytable[numTables];
Hier sag ich doch das ich "NumTables" mal ein neues Obekt der Sorte MyTable will?!

Nein diese Zeile sorgt nur dafür das ein Objekt, in diesem Fall ein Array vom Type
Code:
Mytable
mit der Größe
Code:
numTables
, erzeugt wird.
Aber du musst dann noch für jeden einzelnen Index ein entsprechendes Objekt vom Type
Code:
Mytable
erstellen und zuweisen.
 

Neue Themen


Zurück
Oben