有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

安卓在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) 个答案

  1. # 1 楼答案

    我想说,enum就是你所需要的。比如:

    enum USER_ACTIONS { ACTION_USER_WANTS_TO_DO_A, ACTION_USER_WANTS_TO_DO_B };

    试着回答你的三个问题:

    1)他们在枚举中分组

    2)在日志中,您将得到处理:操作_用户_想要_做_A

    3)是的