Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Ich möchte ein neues Objekt aus einem gespeicherten CSV File erstellen.
Wenn ich die Klassen A,B,C habe und in einem CSV der Text B angegeben ist, soll:
CSV csv = New B();
Ich möchte jedoch nicht viele IF Abfragen einbauen sondern direkt die Information im CSV nutzen.
An anderen Stellen im Code muss daher vorher immer der Objekttyp abgefragt werden.
Wenn du direkt das Objekt aus der CSV lesen willst, dann wirds wohl Reflection sein müssen.
Ansonsten würde ich, wenn du schon eine CSV hast, einfach in der Datei eine ID speichern, die dir sagt, was für ein Objekt es sein muss. Du kannst da auch ziemlich auf Ifs verzichten, Switches tun es auch
Ich habe hier mal ein Beispiel, dass dir erlaubt Objekte zu generieren, ohne das mit if-else Blöcken zu machen.
Java:
public class N
{
private Map<String, Execution> doMap;
public N()
{
doMap = new HashMap<>();
fillMap();
}
private void fillMap()
{
// Either add an explicit Object
doMap.put("1", new ObjectAExecution());
// Or create an anonymous class
doMap.put("1", new Execution()
{
@Override
public Object createObjectFromData(Object someData)
{
Object o = new Object();
// do something that creates your object
return o;
}
});
}
// Returns an object based on the ID and whatever data you want.
// it is a good idea to have an interface that you return
// instead of a generic object.
public Object createObjectFromID(String ID, Object someData)
{
Execution e = doMap.get(ID);
if (e == null)
{
// Do default stuff or throw exception
// e = new DefaultExecution();
}
return e.createObjectFromData(someData);
}
// Interface that lets you execute code
private interface Execution
{
public Object createObjectFromData(Object someData);
}
// An example implementation of teh interface
private class ObjectAExecution implements Execution
{
/* (non-Javadoc)
* @see de.nj.filetransfere.control.N.Execution#createObjectFromData(java.lang.Object)
*/
@Override
public Object createObjectFromData(Object someData)
{
Object o = new Object();
// do something that creates your object
return o;
}
}
}