【发布时间】:2015-05-20 02:09:24
【问题描述】:
考虑到我有 Algorithm 枚举为
public enum Algorithm {
SHA1("sha1"),
HMAC("hmac"),;
Algorithm(final String algorithm) {
this.algorithm = algorithm;
}
private final String algorithm;
public String getAlgorithm() {
return algorithm;
}
}
我有不同的算法作为
public class Sha1 {
public static String hash(final String text, final byte[] sb) {...}
}
和
public class Hmac {
public static String hash(final String text, final byte[] sb) {...}
}
例如,当有人调用时,我想返回他们的实例
Algorithm.SHA1.getInstance()
问题
- 由于我的方法是静态的,如何返回实例? (它是静态的,所以多个线程不能互相玩弄数据)
【问题讨论】:
-
为了使其线程安全 - 使用同步怎么样?
-
添加 getAlgorithm() 方法的方法相同,您也可以添加 getInstance() 方法。您可以在 Enum 或不同的密码上实现它。
SHA1("sha1") { X getInstance() { return new Sha1(); }, Hmac("hmac") { X getInstance() { return new Hmac(); }(但这对静态方法没有多大帮助——无论如何这不是一个好主意)。