Java 匹配作为 ENUM 输入的字符串

Java matching string input as ENUM

我有一个 Java 程序,它使用 ENUM 来编码不同的字符串。 现在,我正在添加 Main class,它从命令行输入一些参数。 问题是用户输入的是一个字符串,但是 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不是字符串。 我希望用户只需要键入 "MYQUERY" 这是一个字符串(在这种情况下,但有无数个),并找到一种方法将其插入到 executeQuery 参数中。 你能推荐一个方便的方法吗?

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

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));