假设我们有一个类是这样的:
public class UserAction {
static final int ACTION_USER_WANTS_TO_DO_A = 1001;
static final int ACTION_USER_WANTS_TO_DO_B = 1002;
static final int[] ALL_ACTIONS_ALLOWED_IN_STATE_X = {
ACTION_USER_WANTS_TO_DO_A,
ACTION_USER_WANTS_TO_DO_D,
ACTION_USER_WANTS_TO_DO_Q,
}
}
... 另一类是这样的:
public class Model {
public void onActionableEvent(int action) {
Log.i("XXX","processing: " + action);
switch (action) {
case: .ACTION_USER_WANTS_TO_DO_A: {
break;
}
case: .ACTION_USER_WANTS_TO_DO_B: {
break;
}
}
}
}
我在记录操作的实际名称而不是原始名称时遇到问题。。。如果不做一大堆低效的代码——例如,在每个case块中分别记录原始字符串,那么使用Hashmap重构名称将变得很麻烦。
我的问题是:可以使用什么样的数据结构来:
1) 允许“UserActions”在UserAction类中被分组,这样子组就可以被迭代(例如,这排除了Enum)。
2) 将在日志中显示操作的实际名称(.toString(),例如),而不是只显示实际的int值(number)(似乎排除了。。。这就是我正在使用的)。
3) 可以像示例中那样静态使用,而不必构造UserAction的实例。