Uważają, że mam Algorithm
enum jakoJak zwrócić instancję z Enum?
public enum Algorithm {
SHA1("sha1"),
HMAC("hmac"),;
Algorithm(final String algorithm) {
this.algorithm = algorithm;
}
private final String algorithm;
public String getAlgorithm() {
return algorithm;
}
}
i mam różne algorytmy jak
public class Sha1 {
public static String hash(final String text, final byte[] sb) {...}
}
i
public class Hmac {
public static String hash(final String text, final byte[] sb) {...}
}
Chcę wrócić do swoich wystąpień, gdy ktoś dzwoni na przykład
Algorithm.SHA1.getInstance()
Pytanie
- Jak mogę powrócić instancję ponieważ moja metoda jest statyczna? (To jest statyczna, tak że wiele wątków nie mogą bawić się ze sobą danych)
Aby czyni go wątku bezpieczne - co o użyciu synchronizacji? – Razib
W ten sam sposób, w jaki dodajesz metodę getAlgorithm(), możesz również dodać metodę getInstance(). Możesz to zaimplementować w Enum lub na różnych szyfrach. 'SHA1 (" sha1 ") {X getInstance() {return new Sha1(); }, Hmac ("hmac") {X getInstance() {return new Hmac(); } '(ale to nie pomoże ci w statycznej metodzie - i tak w tym przypadku nie jest to dobry pomysł). – eckes