PDA

Visualizza la versione completa : [JAVA] Problemi con Singleton


Rplus
14-11-2005, 17:01
sto realizzando un logger e mi trovo nella necessità si utilizzare il singletone per permettere una sola istanza di tale oggetto..

ho provato in questo modo ma ottengo un errore "Type mismatch: cannot convert from FileLogger to Logger" ogni volta, cosa che prima senza singleton non succedeva (nella precedente versione non c'era il metodo putInLog() poichè facevo tutto da getLogger() che faceva return SelectLogger() ).

il codice delle classi LoggerFactory (che leggendo dal file di properties restituisce uno dei 3 tipi differenti di logger) è questo:


import java.util.*;
import java.io.*;

import org.isf.volterra.corsojava.es.log.Logger;

public class LoggerFactory {

private static LoggerFactory pLogger;

private LoggerFactory() {}

/**
* @param nessuno
* @return un Logger
*/
static LoggerFactory getLogger() {
if (pLogger == null) {
pLogger = new LoggerFactory();
}
//SelectLogger();
return pLogger;
}

public Logger putInLog() {
return SelectLogger();
}

public Logger SelectLogger() {
Properties p = new Properties();
try {
p.load(new FileInputStream("datigenerali.properties")); //legge tutte le righe del file di properties
String LogginValue = p.getProperty("LoggerType"); //legge il tipo di log impostato
if (LogginValue.equalsIgnoreCase("file")==true)
return new FileLogger();
else if (LogginValue.equalsIgnoreCase("db")==true)
return new DatabaseLogger();
else
return new ConsoleLogger();
} catch(Exception e){
System.out.println("(non è stato possibile leggere il file di properties, logging su console attivato)");
return new ConsoleLogger(); //logga su console in caso di errore
}
}
}


mentre questo è quello della classe di test:



public class TestLogger {

/**
* classe test della Factory Method Logger
* @param args
*/
public static void main(String[] args) {
/*LoggerFactory hFact = new LoggerFactory();
Logger hLog = hFact.getLogger();
hLog.log("messaggio di log: classe = " + hLog.toString());
*/
LoggerFactory.getLogger().putInLog().log("ciao");
}

}


dove risiede il mio errore? non riesco a venirne fuori :dhò:

grazie per l'aiuto.. ciao :ciauz:

Rplus
15-11-2005, 07:31
ok risolto, c'era un import ad una classe che non aveva assolutamente senso e che ancora adesso non capisco come sia finito lì :fagiano:

:ciauz: :ciauz:

Loading