安卓在Java中使用常量:如何记录给定给它们的名称?
假设我们有一个这样的类:
public class UserAction {
static final int ACTION_USER_WANTS_TO_DO_A = 1001;
static final int ACTION_USER_WANTS_TO_DO_B = 1002;
// ...
// 'sub-grouping'
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) {
// check for state mismatch by iterating over sub-groups
// if (fail) {return;}, if pass:
Log.i("XXX","processing: " + action); // <----- this is the problem.
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)?(似乎排除了int…这是我正在使用的)
3)可以像示例中那样静态使用,而无需构造UserAction实例
# 1 楼答案
我想说,enum就是你所需要的。比如:
enum USER_ACTIONS { ACTION_USER_WANTS_TO_DO_A, ACTION_USER_WANTS_TO_DO_B };
试着回答你的三个问题:
1)他们在枚举中分组
2)在日志中,您将得到处理:操作_用户_想要_做_A
3)是的