根据我的用例,创建自定义数据结构的理想方式

时间:2012-02-27 17:13:50

标签: java class variables runtime


我想这又是一个“最佳实践”问题,因为我可以想到一些不太优雅的方法来实现我的用例。

我的用例如下 我正在编写一个MethodManager(类型)模块,它有助于最终用户通过UI处理实际的方法(函数)调用。
为了这个特定目的,我有一个methodDefinition类,它是一个方法(函数)对我的系统来说的对象形式。
我的methodDefinition成员的简要概述如下:

methodName -- String
methodInputs -- ArrayList<String>
methodResultType -- enum(STRING,MAP,LIST)
methodResult  -- <<variable, on the basis of methodResultType>>

现在methodResult是变量的,可以是基于methodResultType设置为的任何String,Map或List。

我创建了一个MethodResultType类来考虑methodResultType,它看起来如下

public enum MethodResultType {
    LIST,
    MAP,
    STRING;
    }

现在我知道我必须编写一个类来解释methodResult及其基于methodResultType的变量性质,但是不能想到一种非拙劣的方法。

非常感谢任何有关这方面的建议/指示。

感谢
p1ng

1 个答案:

答案 0 :(得分:2)

List,Map和String有一个共同的祖先类:java.lang.ObjectmethodResult因此可以是一个对象。

您还可以将结果及其类型包装到MethodResult对象中,以提供getType()getValueAsString()getValueAsList()getValueAsMap()等方法。如果值的类型不是方法返回的类型,则后三个方法将抛出IllegalStateException。