Java匹配字符串输入为ENUM

时间:2018-10-03 09:52:41

标签: java enums args

我有一个使用ENUM编码不同字符串的Java程序。 现在,我添加了Main类,该类从命令行接收一些参数。 问题在于用户输入是一个字符串,但是ENUM类型是一个不同的java对象。 这里的代码:

public static void main(String[] args) {

    if(args.length!=3)
    {
        printUsage();
        System.exit(0);
    }

    File dbpath = new File( args[0] );
    File file= new File( args[1] );
    String query = args[2];
    Result res = manager.executeQuery(QuerySelector.MYQUERY);

如您所见,第三个参数 query 无法匹配 executeQuery 的参数,因为它是QuerySelector而不是String。 我希望用户只需要键入“ MYQUERY”(这是一个字符串)(在这种情况下,就有不计其数),然后找到一种将其插入到executeQuery参数中的方法。 您能建议一个方便的方法吗?

1 个答案:

答案 0 :(得分:2)

您可以在枚举中创建一个方法,以将字符串转换为相应的枚举。

public static QuerySelector forName(String query) {
    for (QuerySelector param : QuerySelector.values()) {
        if (query.equals(param.toString()))) {
            return param;
        }
    }
    return null;
}

然后将其用于通话

Result res = manager.executeQuery(QuerySelector.forName(query));