Hallo,
ich weiß der Title ist nicht der beste. Was besseres ist mir hierzu jedoch nicht eingefallen.
Folgendes "kleines" Problem habe ich.
Ich möchte wir ein Object erzeugen, indem ich verschiedene Werte (Strings, ints, Dats usw.) Speichern kann. Das ganze soll ich einer art tabelle gespeichert werden.
Meine bisherigen Daten sind folgende.
Ich habe ein Object welches eine Auflistung verschiedener SpaltenObjekte ist.
Das Spaltenobject ist wiederum ein Interface von dem es für jeden Datentyp eine instance gibt. Also Boolean, Date, String usw.
Da aber natürlich alle Spaltentypen ansich die selben eigenschaften haben sollen, gibt es ein Object basiccolumn, welches alle funktionen besitzt. Die einzelnen Spalten sind hierbei nur erweiterungen der basiccolumn.
Leider klappt es hierbei nicht so ganz mit den eingabe und ausgabe typen. Da ich natürlich nicht mit so allgemeinen Typen wie Object arbeiten will arbeite ich mit T und E (<E>)
Dies klappt auch recht gut, solange ich nur meine Spalten und die basicSpalte habe. Sobald jedoch das interface Spalte hinzukommt, wird es kompliziert. Dieses bräuchte ich jedoch, um ein eindeutiges Object zu haben, welches ich in der klasse Table speichern kann.
Da ich mir gut vorstellen kann, das jetzt bei weiten noch nicht alle fragen geklärt sind, habe ich hierzu ein kleines Beispielprojekt geschrieben.
Im Anhang findet ihr es als rar gepackt.
Zum einfachen lesen packe ich hier am ende einfach noch alle 5 klassen hintereinander als code rein. Hoffe sehr, das hierzu jemand ein idee hat.
ich weiß der Title ist nicht der beste. Was besseres ist mir hierzu jedoch nicht eingefallen.
Folgendes "kleines" Problem habe ich.
Ich möchte wir ein Object erzeugen, indem ich verschiedene Werte (Strings, ints, Dats usw.) Speichern kann. Das ganze soll ich einer art tabelle gespeichert werden.
Meine bisherigen Daten sind folgende.
Ich habe ein Object welches eine Auflistung verschiedener SpaltenObjekte ist.
Das Spaltenobject ist wiederum ein Interface von dem es für jeden Datentyp eine instance gibt. Also Boolean, Date, String usw.
Da aber natürlich alle Spaltentypen ansich die selben eigenschaften haben sollen, gibt es ein Object basiccolumn, welches alle funktionen besitzt. Die einzelnen Spalten sind hierbei nur erweiterungen der basiccolumn.
Leider klappt es hierbei nicht so ganz mit den eingabe und ausgabe typen. Da ich natürlich nicht mit so allgemeinen Typen wie Object arbeiten will arbeite ich mit T und E (<E>)
Dies klappt auch recht gut, solange ich nur meine Spalten und die basicSpalte habe. Sobald jedoch das interface Spalte hinzukommt, wird es kompliziert. Dieses bräuchte ich jedoch, um ein eindeutiges Object zu haben, welches ich in der klasse Table speichern kann.
Da ich mir gut vorstellen kann, das jetzt bei weiten noch nicht alle fragen geklärt sind, habe ich hierzu ein kleines Beispielprojekt geschrieben.
Im Anhang findet ihr es als rar gepackt.
Zum einfachen lesen packe ich hier am ende einfach noch alle 5 klassen hintereinander als code rein. Hoffe sehr, das hierzu jemand ein idee hat.
Java:
// klasse 1
abstract class BasicColumn<T> {
private ArrayList<T> column = new ArrayList<T>();
public <T> void addField(T value)
{
this.column.add(value);
}
public <T> getField(int row) throws IndexOutOfBoundsException
{
try
{
return this.column.get(row);
}
catch (IndexOutOfBoundsException ie)
{
throw ie;
}
}
}
// klasse 2
public interface Column {
public <T> void addField(T value);
public <T> T getField(int row) throws IndexOutOfBoundsException;
}
//klasse 3
public class ColumnBoolean extends BasicColumn<Boolean> implements Column{
}
//klasse 4
public class ColumnString extends BasicColumn<String> implements Column{
}
// klasse 5
public class Table {
private ArrayList<Column> columns = new ArrayList<Column>();
public <T> void addField(T value, int col)
{
columns.get(col).addField(value);
}
public <T> T getField(int col, int row) throws IndexOutOfBoundsException
{
return columns.get(col).getField(row);
}
}