我有下面的枚举类

public enum AlgorithmEnum {

    SHA512("RSA", "SHA512", 1), SHA1("RSA", "SHA1", 1), SHA384("RSA", "SHA384", 1);

    private String keyAlgorithm;
    private String hashAlgorithm;
    private Integer key;

    private AlgorithmEnum(String keyAlgorithm, String hashAlgorithm, Integer key) {
        this.keyAlgorithm = keyAlgorithm;
        this.hashAlgorithm = hashAlgorithm;
        this.key = key;
    }

    public String getKeyAlgorithm() {
        return keyAlgorithm;
    }

    public void setKeyAlgorithm(String keyAlgorithm) {
        this.keyAlgorithm = keyAlgorithm;
    }

    public String getHashAlgorithm() {
        return hashAlgorithm;
    }

    public void setHashAlgorithm(String hashAlgorithm) {
        this.hashAlgorithm = hashAlgorithm;
    }

    public Integer getKey() {
        return key;
    }

    public void setKey(Integer key) {
        this.key = key;
    }
}


我需要像下面这样的方法,它将输入作为字符串并返回Enum

public AlgorithmEnum getAlgorithm(String algorithm){
        //returns AlgorithmEnum object
    }


我将通过传递“ SHA512withRSA”作为getAlgorithm方法的输入来调用上述方法。

我在实现getAlgorithm方法时需要帮助。

最佳答案

您可以有类似以下内容:

public static AlgorithmEnum getAlgorithm(final String algorithm)
        throws IllegalArgumentException
    {
        for (final AlgorithmEnum algorithmEnum : AlgorithmEnum.values())
        {
            if (algorithm.equalsIgnoreCase(String.format("%swith%s", algorithmEnum.getHashAlgorithm(), algorithmEnum.getKeyAlgorithm())))
            {
                return algorithmEnum;
            }
        }
        throw new IllegalArgumentException("Unknown algorithm: " + algorithm);
    }


但是,我不建议使用这种方法。而是使用2个不同的参数而不是单个String。

关于java - 如果与给定的字符串匹配,如何返回Enum,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53388900/

10-11 08:26