【问题标题】:Initializing an ArrayList whose type is specified by the user初始化用户指定类型的 ArrayList
【发布时间】:2017-09-13 05:30:03
【问题描述】:

我想初始化一个数组,其类型由用户通过命令行指定。也就是说,如果用户输入“int”,我想这样做:

ArrayList<Integer> res = new ArrayList<Integer>();

同样,如果用户输入“字符串”,我想这样做:

ArrayList<String> res = new ArrayList<String>();

现在我当然可以通过一堆 if-else 语句来做到这一点,但是我想知道是否有一个聪明的方法来做到这一点。假设用户输入的类型始终是原始类型,即 int、string、boolean 等。

【问题讨论】:

  • 你打算用res做什么? (在伪代码中。)
  • 这只是数组的随机名称。我将填充一堆随机元素。
  • 我在问你打算对结果数组列表做什么。
  • 我找到了 2 个可能感兴趣的帖子 - stackoverflow.com/questions/180097/…stackoverflow.com/questions/5032898/…。他们都讨论了如何将原始类型动态转换为对应的 Class 对象。
  • 可能有一种巧妙的方法来做你想做的事,但它可能不涉及泛型。如果不详细说明您希望程序对列表做什么,真的很难说。

标签: java command-line constructor


【解决方案1】:

泛型数组的实际类型,即 之间只存在于编译时,又名type erasure...

这意味着只有 ArrayList&lt;Object&gt; 只在运行时真正存在......因此你所问的并没有真正的意义。

到目前为止,您的问题中没有足够的信息来帮助您进一步...

【讨论】:

  • 如果问题中没有足够的信息来给出正确的答案,这不应该是评论吗?
猜你喜欢
  • 1970-01-01
  • 2020-04-12
  • 2011-05-28
  • 2023-01-10
  • 1970-01-01
  • 1970-01-01
  • 2015-07-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多