【发布时间】:2010-11-26 05:49:12
【问题描述】:
我想创建一个数据列表,从一个方法传递到另一个方法,但是我不能使用结构,因为这个列表中包含的数据会因输入而异。
例如
if (x == 1) {
a = 1
b = true
c = 42
d = "hello"
}
if (x == 2) {
a = 2
b = 'g'
c = "sup"
}
我相信我的选择是这样的:
- 创建一个数组或字符串列表,并将数据转换回原来的字符串。这很混乱,可能会导致无法解释的输入错误,但不会那么糟糕,因为它会在运行时被检测到。
- 为每种可能性创建一个结构 - 这是一种好的做法吗?
- 不知何故使用泛型。据我所知,虽然泛型是类型安全的但不是类型严格的,但它们必须在使用之前转换为类型。例如,如果我想要一个项目列表,我需要将它们转换为字符串,就像解决方案 1 中发生的那样,这使得这无用。
那么我的问题是,这些选项中哪一个是最好的?或者是否有使用某种我不知道的通用类型的替代选项?每种情况下可能变量的数量可能会改变,就像它们的类型一样。我希望能够将单个 List 或 Array 返回给调用方法,以便它可以适当地处理结果。它将知道如何根据 a 的值处理每组数据,因为它将是“动作选择”标识符。我也知道每次将它们转换为对象并返回非常密集,所以我宁愿避免这种情况。
这可能很简单,但它让我很难过......
【问题讨论】:
-
为了提供更多信息,基本上这是试图根据用户的选择从输入字符串中解释各种数据。如果他们说一件事,我需要检查该数据然后抓取它,列出这些数据及其类型(各种事物都来自这些信息)。问题是我想让它可扩展,所以我总是可以添加东西而不必遵守严格的结构,而且我不应该在使用时重铸所有东西。我喜欢 ArrayList 建议以及重构建议。我会尝试修改它。