Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 常量表示/设计_Java_Design Patterns_Enums - Fatal编程技术网

Java 常量表示/设计

Java 常量表示/设计,java,design-patterns,enums,Java,Design Patterns,Enums,我需要一种在java中构造常量树的方法 对于一个API,我有:操作/请求名称,对于每个操作,都有特定数量的参数 API_V00 action_1: param_1,param_2 ...; action_2: param_3,param_4 ...; ...... 我希望将action_1、action_2、param_1、param_2等表示为常量/枚举,并通过以下方式访问它们: API_V00.action_1 -> this should return a

我需要一种在java中构造常量树的方法

对于一个API,我有:操作/请求名称,对于每个操作,都有特定数量的参数

API_V00
    action_1: param_1,param_2 ...;
    action_2: param_3,param_4 ...;
    ......
我希望将
action_1
action_2
param_1
param_2
等表示为常量/枚举,并通过以下方式访问它们:

API_V00.action_1 -> this should return a string with value "action_1"
API_V00.action_2 -> this should return a string with value "action_2"


API_V00.action_1.param_1 -> this should return a string with value "param_1"
API_V00.action_1.param_2 -> this should return a string with value "param_2"
API_V00.action_2.param_3 -> this should return a string with value "param_3"
API_V00.action_2.param_4 ......

我试着用动作创建一个枚举,我有
API\u V00。动作\u 1
->返回一个字符串,但现在我没有办法将prams名称绑定到每个动作,从而对参数
action\u 1.param\u 1
等具有这种访问类型。

听起来你应该创建一个简单的类来包装动作+参数对。如果您希望它更像常量,那么可以将构造函数设置为私有的,并提供一些“预实例化”实例。例如,类似这样的方法可能会起作用:

public class ParameterizedAction {
    public static ParameterizedAction API_V00
        = new ParameterizedAction(action_1, "param_1", "param_2", ...);
    // etc for the others

    private final Action action;
    private final String[] params;

    private ParameterizedAction(Action action, String... parameters) {
        this.action = action;
        this.parameters = parameters;
    }

    public Action getAction() {
        return action;
    }

    public String parameter(int idx) {
        return parameters[idx];
    }
}

通常,类似的内容将使用访问器方法实现。是否有任何理由需要通过现场访问来完成?所有操作是否都有相同数量的
param.*
参数?每个命令/操作的婴儿车数量不同。如果不从列表中获取参数,我将无法选择准确的参数。并希望这将是一种表示枚举值内常量的方法,以及如何为一个操作访问参数?作为ParameteredAction.API_V00。我刚刚更新了它。但基本上,访问参数就像访问其他任何东西一样——使用getter函数。