如果枚举类是Java中方法中的参数,如何获取枚举值?

Fat*_*aho 0 java parameters methods enums

我有多个枚举.这是一个例子:

   public enum Telomeres {

    TELOMERE_1("TTAGGG"), TELOMERE_2("TTCAAA");

    public String telomere;

    Telomeres(String telomere){
        this.telomere = telomere;
    }

    public String getSequence() {
        return telomere;
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试创建循环所有枚举类值的方法(使用枚举参数)并检查String是否至少包含其中一个值.不幸的是我无法获取枚举值来检查字符串是否包含它们.这是代码,它说明了问题.

public <T extends Enum<T>> boolean hasTranscriptionStopSite(Class<T> enumData, String chromatin) {

    for(T e: enumData.values()) { // I get error here
        if(chromatin.contains(e.getSequence())){ // Also I have problems here 
            hasTranscriptionStopSite = true;
            break;
        }            
    }
    return hasTranscriptionStopSite;                
}
Run Code Online (Sandbox Code Playgroud)

我将非常感谢任何建议如何解决这个问题或纠正我的观点.

fab*_*ian 5

要从Class对象获取枚举值,您可以使用Class.getEnumConstants().

如果要访问该getSequence()功能.你应该使用一个接口:

public interface SequenceProvider {
    String getSequence();
}

public enum Telomeres implements SequenceProvider {
    /*
    ...
    */

    @Override
    public String getSequence() {
        return telomere;
    }
}
Run Code Online (Sandbox Code Playgroud)

并更改签名hasTranscriptionStopSite(Class, String)以保证,T扩展界面:

public <T extends Enum<T> & SequenceProvider> boolean hasTranscriptionStopSite(Class<T> enumData, String chromatin)
Run Code Online (Sandbox Code Playgroud)