Consider that I have Algorithm enum as  
public enum Algorithm {
  SHA1("sha1"),
  HMAC("hmac"),;
  Algorithm(final String algorithm) {
    this.algorithm = algorithm;
  }
  private final String algorithm;
  public String getAlgorithm() {
    return algorithm;
  }
}
and I have different algorithms as
public class Sha1 {
   public static String hash(final String text, final byte[] sb) {...}
}
and
public class Hmac {
   public static String hash(final String text, final byte[] sb) {...}
}
I want to return their instances when someone calls for example
Algorithm.SHA1.getInstance()
Question
- How can I return the instance since my method is static? (It is static so that multiple threads can not play around with each other data)
 
     
     
    