提问者:小点点

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


我有这个枚举函数,它将颜色返回为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用户那里得到一个字符串,他选择了北方、南方、东方或西方,如下所示:

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

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

Direction.currentUserDirection.get();

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

谢谢你的时间帮助我:)


共2个答案

匿名用户

不需要静态方法。value eOf已经做到了:

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

匿名用户

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

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

尽管由于输入不当,当然必须检查空指针。