Android - 使用来自web的字符串作为对象枚举

时间:2014-12-04 23:13:19

标签: java android enums parse-platform

我有这个枚举函数,它返回一个颜色作为int

    public enum Direction {

NORTH(Color.RED), WEST(Color.BLUE), EAST(Color.BLACK), SOUTH(
        Color.GREEN);

Direction(int c) {
    color = c;
}
private int color;


public int get() {
    return color;
} 
}

我称之为:

Direction.SOUTH.get();

现在我想从我的parse.com用户那里获得一个字符串,这个用户选择了North,South,East或West:

String currentUserDirection = currentUser.getString("direction").toUpperCase();

然后在方法的调用中使用它,所以它会是这样的,

Direction.currentUserDirection.get();

但是我有一个字符串而不是类型方向的对象,我如何使用我从用户那里得到的字符串作为函数的输入?

感谢您抽出时间帮助我:)

2 个答案:

答案 0 :(得分:2)

不需要静态方法。 valueOf已经这样做了:

int color = Direction.valueOf(currentDirection).get();

答案 1 :(得分:0)

您可以在枚举上创建一个静态方法,该方法将遍历所有枚举值,并查找传入的值。

public static Direction parseString(String direction){
    if(direction != null){
        //trim the input since I never trust user input
        direction = direction.trim();

        for(Direction d : Direction.values()){
            if(d.toString().equalsIgnoreCase(direction)){
                return d;
            }
        }
    }

    return null;
}

然后你可以打电话

Direction.parse(currentDirection).get();

虽然当然必须检查由于输入不当而导致的空指针。