B
BenBecker234
Gast
Hallo,
ich programmiere seit Jahren Java und habe nun ein Problem, das ich mir beim besten Willen nicht erklären kann. Ich verwende eine Singleton-Klasse (über für und wider kann man diskutieren, aber ich weiß, was ich mache), das ganze im OSGi-Framework Knopflerfish. Es passiert das selstsame Verhalten, dass der Konstruktor der Klasse nie aufgerufen wird, aber eine Instanz existiert, da offensichtlich eine Methode problemlos aufgerufen wird. Hier mein (gekürzter Code):
ich programmiere seit Jahren Java und habe nun ein Problem, das ich mir beim besten Willen nicht erklären kann. Ich verwende eine Singleton-Klasse (über für und wider kann man diskutieren, aber ich weiß, was ich mache), das ganze im OSGi-Framework Knopflerfish. Es passiert das selstsame Verhalten, dass der Konstruktor der Klasse nie aufgerufen wird, aber eine Instanz existiert, da offensichtlich eine Methode problemlos aufgerufen wird. Hier mein (gekürzter Code):
Java:
public class FileHandler {
private FileWriter out;
private File file;
private int lines = 0;
private static FileHandler instance;
private FileHandler(){
this.writeBuffer = new StringBuffer();
initFile();
}
private void initFile() {
file = new File("test.txt");
try {
out = new FileWriter(file, true);
} catch (IOException e) {
Context.log.error("Could not create file: " + e.getMessage());
}
}
public synchronized void write(String text) {
writeBuffer.append(text);
this.lines++;
if(this.lines >= 1000){
flushIt();
}
}
private void flushIt() {
try {
this.out.append(writeBuffer);
this.out.flush();
writeBuffer.delete(0, writeBuffer.length());
this.lines = 0;
} catch (Exception e) {
Context.log.error("Error on flushing",e);
}
}
public synchronized static FileHandler getInstance() {
if(instance == null){
instance = new FileHandler();
}
return instance;
}
}