如何在java中通过2个参数返回枚举值

Con*_*dky 8 java enums

我在java中有这样的枚举类

    public enum MockTypes
    {
        // Atlantis mocks
        ATLANTIS_VERIFY("ATLANTIS", "verify"),
        ATLANTIS_CREATE_RECORD("ATLANTIS", "createRecord"),

    ...

        private String m_adaptor;

        private String m_step;

private MockTypes( String adaptor, String step)
    {
        m_adaptor = adaptor;
        m_step = step;
    }

             public String getAdaptor()
        {
            return m_adaptor;
        }

        public String getStep()
        {
            return m_step;
        }
Run Code Online (Sandbox Code Playgroud)

我必须实现通过适配器和步骤参数返回枚举值的方法.

public MockTypes getMockTypeByName(String adaptor, String step)
Run Code Online (Sandbox Code Playgroud)

但我不知道怎么做.有人能帮助我吗?

Eng*_*uad 12

public MockTypes getMockTypeByName(String adaptor, String step)
{
    for(MockTypes m : MockTypes.values())
    {
        if(m.getAdaptor().equals(adaptor) && 
           m.getStep().equals(step)) return m;
    }
    return null;
}
Run Code Online (Sandbox Code Playgroud)

  • 顺便说一句,有趣的是:为枚举类型调用`values()`每次都会重建整个数组,但是在`EnumSet.allOf(MockTypes.class)`上进行迭代只会使O(1)起作用。 (2认同)