Si consideri che ho Algorithm
enum comeCome restituire un'istanza da Enum?
public enum Algorithm {
SHA1("sha1"),
HMAC("hmac"),;
Algorithm(final String algorithm) {
this.algorithm = algorithm;
}
private final String algorithm;
public String getAlgorithm() {
return algorithm;
}
}
e ho diversi algoritmi come
public class Sha1 {
public static String hash(final String text, final byte[] sb) {...}
}
e
public class Hmac {
public static String hash(final String text, final byte[] sb) {...}
}
voglio tornare i loro casi in cui qualcuno chiama per esempio
Algorithm.SHA1.getInstance()
Domanda
- Come posso restituire l'istanza in quanto il mio metodo è statico? (È statico in modo che più thread non possono giocare con ogni altri dati)
a rendere thread-safe - che dire utilizzando la sincronizzazione? – Razib
Nello stesso modo in cui si aggiunge un metodo getAlgorithm() è anche possibile aggiungere un metodo getInstance(). Puoi implementarlo sull'Enum o sui diversi codici. 'SHA1 (" sha1 ") {X getInstance() {return new Sha1(); }, Hmac ("hmac") {X getInstance() {return new Hmac(); } '(ma questo non ti aiuta molto con un metodo statico - che comunque non è una buona idea in quel caso). – eckes