[java.lang.String;无法转换为 java.lang.String
我正在从产品的 API 获取向量。
Vector<?> dataVector = dataAPI.getReturnVector();
该向量预计包含字符串作为值。我可以将向量的大小打印为 2。但由于某种原因,我无法迭代并打印这些值。
我尝试过
Iterator<?> iter = dataVector.iterator();
while( iter.hasNext()) {
System.out.println(iter.next());
}
,最终总是得到
[java.lang.String; cannot be cast to java.lang.String
我使用过的
iter.next().getClass().getName()
a ,结果发现它只是 java.lang.String
。
我用谷歌搜索了一下,发现了类似的问题 http://prideafrica.blogspot.com/2007 /01/javalangclasscastexception.html
我尝试将泛型设置为 String[]
,但最终出现了相同的错误。
如果向量包含 java.lang.String,为什么会出现此强制转换异常?如何打印实际值?
请提供您的建议。
I'm obtaining a Vector from a product's API.
Vector<?> dataVector = dataAPI.getReturnVector();
The vector is expected to contain Strings as value. I'm able to print the size of the vector as 2. But for some reason I'm not able to iterate and print the values.
I tried
Iterator<?> iter = dataVector.iterator();
while( iter.hasNext()) {
System.out.println(iter.next());
}
I always end up getting a
[java.lang.String; cannot be cast to java.lang.String
I used
iter.next().getClass().getName()
and it turned out to be java.lang.String
only.
I googled a bit and found a similar problem at http://prideafrica.blogspot.com/2007/01/javalangclasscastexception.html
I tried to set the generics as String[]
, but ended up with the same error.
If the vector contains java.lang.String
, why do I get this cast exception? How can I print the actual values?
Kindly provide your suggestions.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
因此,API 不返回字符串向量,而是返回字符串[] 向量。
您应该能够迭代向量,然后对于每个元素,循环遍历数组。
So the API is not returning a Vector of Strings but a Vector of String[].
You should be able to iterate through the vector and then, for each element, loop through the array.
尝试比较他们的类加载器。如果它们不同,则会发生此异常。
Try compare their classLoaders. If they are different, then this Exception occur.
无需使用迭代器。您可以使用 Vector 的 elementAt(index) 方法来打印值。使用
For
循环获取Vector
的索引。示例:
如果您得到一个奇怪的答案(数字和字母),您将得到一个
String[]
对象。这意味着您将使用 Arrays 的内置方法来打印 String[] 数组。请参阅下面的评论。No need to use an iterator. You could just use the
elementAt(index)
method ofVector
s to print the values. Use aFor
loop to get the indices of theVector
.Example:
If you are getting a strange answer (of numbers and letters), you getting a
String[]
object. That means you will have use the built-in method ofArrays
to print theString[]
array. See the comments below.