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

[java.lang.String;无法转换为java.lang.String,java,string,vector,classcastexception,Java,String,Vector,Classcastexception,我从产品的API中获取一个向量 Vector<?> dataVector = dataAPI.getReturnVector(); 我曾经 iter.next().getClass().getName() 结果只显示了java.lang.String 我在谷歌上搜索了一下,发现了一个类似的问题 我试图将泛型设置为String[],但最终还是出现了相同的错误 如果向量包含java.lang.String,为什么会出现此强制转换异常?如何打印实际值 请提供您的建议。尝试比较它们的类

我从产品的API中获取一个向量

Vector<?> dataVector = dataAPI.getReturnVector();
我曾经

iter.next().getClass().getName() 
结果只显示了
java.lang.String

我在谷歌上搜索了一下,发现了一个类似的问题

我试图将泛型设置为
String[]
,但最终还是出现了相同的错误

如果向量包含
java.lang.String
,为什么会出现此强制转换异常?如何打印实际值


请提供您的建议。

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

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

无需使用迭代器。只需使用
Vector
s的
elementAt(index)
方法即可打印值。使用
For
循环可获得
向量的索引

例如:

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

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

因此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]);
    }
}
Iterator iter=dataVector.Iterator();
while(iter.hasNext()){
字符串[]数组=iter.next();
for(int i=0;i
分号从何而来?错误消息是否可能以一个大括号开始,如
[java.lang.String;
?这可能是字符串数组的内部名称。哦,是的,它以一个大括号开始[.抱歉错过了。我不知道这会有什么不同。这是在做什么?是迭代器吗?这是哪种“产品API”?可能是Java字节码版本不匹配吗?它打印[Ljava.lang.String;@25a091[Ljava.lang.String@50a11a@whoopy_whale:您可以执行
System.out.println(Arrays.toString(dataVector.elementAt(i));
@βɛƨǤʋʋʋɢ要使用Arrays.toString,我必须使用泛型作为向量,输出是[][]@Roshnal尝试使用Arrays方法,它会打印[][](空数组)好的…算出了…API正在返回一个大小为2的向量,值是两个字符串数组。这些字符串数组应该包含值,在本例中由于某种原因为空。这只是API调用的一个问题。但正如大家所说,强制转换异常是由字符串[]引起的和字符串。感谢所有的帮助!看起来好像有什么东西正试图将
String
s数组强制转换为
String
。谢谢!这将起作用。在我的情况下,正如您所说的,向量返回字符串[]。在某些情况下,api方法没有按预期“填充”字符串数组。。。
Vector<?> dataVector = dataAPI.getReturnVector();
for(int i = 0; i < dataVector.size(); i++) {
    System.out.println(dataVector.elementAt(i));
}
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]);
    }
}