Hallo mal wieder!
Weil mein Sourcecode zu umfangreich und kompliziert wäre, habe ich das Problem das ich habe in einem Stück Beispielcode dargestellt. Fall Syntaxfehler drin sind, hat das damit zu tun, daß dieser Code nie einen Compiler gesehen hat und einfach nur in Notepad getippt wurde. Ich hoffe er ist dennoch einigermassen fehlerfrei. Soweit zum Disclaimer
Ok, hier erstmal das Szenario:
Ok, das sind also zwei Hierarchien:
1. Daten
2. Panels in denen diese Daten dargestellt werden sollen
und dann ist da noch die Klasse "SomeClass", die mit diesen arbeitet. Das Problem das ich habe ist, daß in meiner realen Anwendung, egal welchen Wert d.getType() in SomeClass.doStuff() liefert also auch egal welche Panelklasse erzeugt wird, IMMER nur PanelBase.setData(d) aufgerufen wird. Eigentlich möchte ich, daß entweder APanel.setData(d) oder BPanel.setData(d) aufgerufen wird.
Kann mir jemand erklären wo mein Denkfehler liegt und wie man das beheben könnte.
Danke
Lenny
Weil mein Sourcecode zu umfangreich und kompliziert wäre, habe ich das Problem das ich habe in einem Stück Beispielcode dargestellt. Fall Syntaxfehler drin sind, hat das damit zu tun, daß dieser Code nie einen Compiler gesehen hat und einfach nur in Notepad getippt wurde. Ich hoffe er ist dennoch einigermassen fehlerfrei. Soweit zum Disclaimer
Ok, hier erstmal das Szenario:
Java:
// --- DATA CLASSES ---
class Data
{
public Data(int dtype)
{
type = dtype;
}
public int getType()
{
return type;
}
private int type;
//some data
}
class AData extends Data
{
public AData()
{
super(0);
}
//some additional data
}
class BData extends Data
{
public BData()
{
super(1);
}
//some additional data
}
// --- PANELS ---
class PanelBase
{
public setData(Data d)
{
// doing something with the data
}
}
class APanel
{
public setData(AData d)
{
super.setData(d);
// doing something with the data
}
}
class BPanel
{
public setData(BData d)
{
super.setData(d);
// doing something with the data
}
}
// Programmfragment
public someclass
{
public void doStuff(Data d)
{
switch (d.getType())
{
case 0:
panel = new APanel();
break;
case 1:
panel = new BPanel();
}
// >>> HIER IST DAS PROBLEM !!! <<<
panel.setData(d);
}
private PanelBase panel;
}
Ok, das sind also zwei Hierarchien:
1. Daten
2. Panels in denen diese Daten dargestellt werden sollen
und dann ist da noch die Klasse "SomeClass", die mit diesen arbeitet. Das Problem das ich habe ist, daß in meiner realen Anwendung, egal welchen Wert d.getType() in SomeClass.doStuff() liefert also auch egal welche Panelklasse erzeugt wird, IMMER nur PanelBase.setData(d) aufgerufen wird. Eigentlich möchte ich, daß entweder APanel.setData(d) oder BPanel.setData(d) aufgerufen wird.
Kann mir jemand erklären wo mein Denkfehler liegt und wie man das beheben könnte.
Danke
Lenny