微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从数组转换为向量时的java泛型问题

如何解决从数组转换为向量时的java泛型问题

| 为什么不允许这样做? arr是double []。
Vector<Double> v = new Vector<Double>(Arrays.asList(arr));
我收到无法识别的构造函数错误。它认为我正在尝试使用
Vector(java.util.List<double[]>)
构造函数,这似乎很奇怪,为什么它会成为double [] s的列表?如果我做这个就编译
Vector<Double> v = new Vector(Arrays.asList(arr));
但随后我收到有关未检查作业的警告     

解决方法

        这是因为ѭ3与Java中的ѭ4不同。 Arrays.asList不适用于原语,因此当您以ѭ5作为第一个参数调用它时,它会认为您将数组本身作为
...
样式参数列表中的第一个参数传递。因此,
Arrays.asList
返回一个a5ѭ列表,其中仅包含一个元素:您传入的
double[]
。     ,        ѭ10之类的泛型不允许基本类型,这就是为什么您的程序失败的原因。 您需要迭代数组并逐项填充您的收集项。或者,您可以使用ArrayUtils.toObject()方法将ѭ5转换为
Double[]
。该类位于Apache Commons库中。     ,        为了澄清起见,\'double \'是原始类型,例如\'int \'或\'char \'。 \'Double \'是一个类类型。您可以将向量设为。将原始数组更改为\'Double \'的数组,而不是\'double \'的数组。     ,        
Arrays.asList(T... a)
对于原始数组不能按预期方式工作,因为泛型和原始对象相处得并不很好。编译器对
T
使用
double[]
,这就是为什么
Arrays.asList
返回
List<double[]>
的原因。 我认为获得所需内容的最短代码是:
Vector<Double> v = new Vector<Double>(arr.length);
for (double d : arr) v.add(d);
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。