Ich habe einen Task-Manager geschrieben, und nun, es ist eine lange Geschichte ... ganz in Java übrigens. Also schrieb ich eine Fassade, die Sie unten sehen können, gibt es ein Problem mit der HashMap und ich vermute, dass die Werte, die ich während der Konstruktion in die HashMap einzufügen versuche, nicht so gut laufen Die Methode, die die Nullzeigerausnahme auslöst, ist die create-Methode, deren Eingabeparameter verifiziert wurden von mir und meinem trusty Debugger zu bevölkernNull Zeiger in meiner Fassade :(
irgendeine Hilfe hier würde groß sein ... Ich bin sicher, dass ich vergessen habe, etwas zu erwähnen, also werde ich auf Anmerkungen so bald wie möglich antworten, wie ich dieses Ding jetzt erledigen muss.
package persistence;
import java.util.UUID;
import java.util.HashMap;
import persistence.framework.ComplexTaskRDBMapper;
import persistence.framework.IMapper;
import persistence.framework.RepeatingTaskRDBMapper;
import persistence.framework.SingleTaskRDBMapper;
public class PersistanceFacade {
@SuppressWarnings("unchecked")
private static Class SingleTask;
@SuppressWarnings("unchecked")
private static Class RepeatingTask;
@SuppressWarnings("unchecked")
private static Class ComplexTask;
private static PersistanceFacade uniqueInstance = null;
@SuppressWarnings("unchecked")
private HashMap<Class, IMapper> mappers;
public PersistanceFacade() {
mappers = new HashMap<Class, IMapper>();
try {
SingleTask = Class.forName("SingleTask");
RepeatingTask = Class.forName("RepeatingTask");
ComplexTask = Class.forName("ComplexTask");
mappers.put(SingleTask, new SingleTaskRDBMapper());
mappers.put(RepeatingTask, new RepeatingTaskRDBMapper());
mappers.put(ComplexTask, new ComplexTaskRDBMapper());
}
catch (ClassNotFoundException e) {}
}
public static synchronized PersistanceFacade getUniqueInstance() {
if (uniqueInstance == null) {
uniqueInstance = new PersistanceFacade();
return uniqueInstance;
}
else return uniqueInstance;
}
public void create(UUID oid, Object obj) {
IMapper mapper = (IMapper) mappers.get(obj.getClass());
mapper.create(oid, obj);
}
@SuppressWarnings("unchecked")
public Object read(UUID oid, Class type) {
IMapper mapper = (IMapper) mappers.get(type);
return mapper.read(oid);
}
public void update(UUID oid, Object obj) {
IMapper mapper = (IMapper) mappers.get(obj.getClass());
mapper.update(oid, obj);
}
@SuppressWarnings("unchecked")
public void destroy(UUID oid, Class type) {
IMapper mapper = (IMapper) mappers.get(type);
mapper.destroy(oid);
}
}
Wo definieren Sie Mapper in der Methode create() in mappers.get (obj.getClass());? – CoolBeans
Was passiert, wenn Sie dies in einem Debugger ausführen? Dies sollte Ihnen helfen zu verstehen, was passiert. –
Ich sehe jetzt, dass Mapper im Konstruktor initialisiert wird. Wie rufen Sie create() auf? – CoolBeans