java - 2 个相似的 java 枚举和一个方法决定应该从哪个枚举中选择值

标签 java string enums

我想实现一个方法来决定从什么 java 枚举中获取特定值。例如:

public enum Credentials1 {
    USERNAME("user"),
    PASSWORD("pass");
}
public enum Credentials2 {
    USERNAME("user"),
    PASSWORD("pass");
}

然后,在另一个类中,我想要一个通用方法来根据另一个参数来决定我应该使用什么枚举来获得正确的用户。像这样的东西:

public String decide(here I should pass something?) {
    switch (myParam) {
        case "1":
            return Credentials1.USERNAME;
        case "2":
            return Credentials2.USERNAME;
    }
    return "";
}

这可以实现吗,因为我没有成功?并认为除了 USERNAMEPASSWORD 之外,这些枚举中还有很多常量。

最佳答案

使用以下方法创建接口(interface)Credentials:

public interace Credentials {

    public String value();
}

使这些 enum 实现一个具有返回值的通用方法的接口(interface)。下面是 Credentials1Credentials2 类比实现。

public enum Credentials1 implements Credentials {

    USERNAME("user"),
    PASSWORD("pass");

    private String value;

    Credentials1(String value) {
        this.value= value;
    }

    @Override
    public String value() {
        return this.str;
    }
}

在这里你传递了正确的enum 用于进一步的处理:

public String decide(Credentials credentials) {
     return credentials.value();
}

示例用法是:

String string = this.decide(Credentials1.USERNAME);

关于java - 2 个相似的 java 枚举和一个方法决定应该从哪个枚举中选择值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52383408/

相关文章:

c++ - 在 C++ 中将十六进制字符串转换为无符号字符

java - 我怎么知道正则表达式是否有多个可能的匹配项?

java - 扩展 Java 枚举

java - Java 中 vararg 的性能影响

java - 是否可以获得通用参数的类?

string - 在 Rust 中将 ascii 字符串文字转换为 &[u8]?

java - Eclipse 喜欢它,javac 讨厌它,它是一个带有接口(interface)的枚举

swift - 如何存档具有关联值的枚举?

java - 集成 JBoss Errai 和 Spring?

java - 在 Spring 中保护 REST 资源的更好方法?