我有这个枚举函数,它返回一个颜色作为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();
但是我有一个字符串而不是类型方向的对象,我如何使用我从用户那里得到的字符串作为函数的输入?
感谢您抽出时间帮助我:)
答案 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();
虽然当然必须检查由于输入不当而导致的空指针。