我想这又是一个“最佳实践”问题,因为我可以想到一些不太优雅的方法来实现我的用例。
我的用例如下
我正在编写一个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
答案 0 :(得分:2)
List,Map和String有一个共同的祖先类:java.lang.Object
。 methodResult
因此可以是一个对象。
您还可以将结果及其类型包装到MethodResult
对象中,以提供getType()
,getValueAsString()
,getValueAsList()
和getValueAsMap()
等方法。如果值的类型不是方法返回的类型,则后三个方法将抛出IllegalStateException。