[java.lang.String;无法转换为 java.lang.String

发布于 2025-01-01 14:17:29 字数 863 浏览 1 评论 0原文

我正在从产品的 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

花辞树 2025-01-08 14:17:29

因此,API 不返回字符串向量,而是返回字符串[] 向量。

您应该能够迭代向量,然后对于每个元素,循环遍历数组。

Iterator<String[]> iter = dataVector.iterator();

while( iter.hasNext()) {
    String[] array = iter.next();
    for(int i=0; i < array.length; i++)
    {
       System.out.println(i + ": " + array[i]);
    }
}

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.

Iterator<String[]> iter = dataVector.iterator();

while( iter.hasNext()) {
    String[] array = iter.next();
    for(int i=0; i < array.length; i++)
    {
       System.out.println(i + ": " + array[i]);
    }
}
病毒体 2025-01-08 14:17:29

尝试比较他们的类加载器。如果它们不同,则会发生此异常。

StringClass1.getClassLoader()==StringClass2.getClassLoader();

Try compare their classLoaders. If they are different, then this Exception occur.

StringClass1.getClassLoader()==StringClass2.getClassLoader();
不回头走下去 2025-01-08 14:17:29

无需使用迭代器。您可以使用 Vector 的 elementAt(index) 方法来打印值。使用 For 循环获取 Vector 的索引。

示例:

Vector<?> dataVector = dataAPI.getReturnVector();
for(int i = 0; i < dataVector.size(); i++) {
    System.out.println(dataVector.elementAt(i));
}

如果您得到一个奇怪的答案(数字和字母),您将得到一个 String[] 对象。这意味着您将使用 Arrays 的内置方法来打印 String[] 数组。请参阅下面的评论。

No need to use an iterator. You could just use the elementAt(index) method of Vectors to print the values. Use a For loop to get the indices of the Vector.

Example:

Vector<?> dataVector = dataAPI.getReturnVector();
for(int i = 0; i < dataVector.size(); i++) {
    System.out.println(dataVector.elementAt(i));
}

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 of Arrays to print the String[] array. See the comments below.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文