ClassCastException:java.lang.String不能强制转换为Ljava.lang.String

ClassCastException:java.lang.String不能强制转换为Ljava.lang.String,java,arrays,string,casting,Java,Arrays,String,Casting,我得到这个错误-> java.lang.ClassCastException: java.lang.String cannot be cast to [Ljava.lang.String; 从下面粘贴的代码 public class LoginAttemps extends Setup { public void testSearchCountry() throws Exception { driver.get("http://www.wikipedia.org/wi

我得到这个错误->

java.lang.ClassCastException: java.lang.String cannot be cast to [Ljava.lang.String; 
从下面粘贴的代码

public class LoginAttemps extends Setup {
    public void testSearchCountry() throws Exception {
        driver.get("http://www.wikipedia.org/wiki/Main_Page");
        ReadExcelDemo readXls = new ReadExcelDemo();
         List dataList = readXls.getData();
         for (int i = 1; i < dataList.size(); i++) {
             String[] testCase = new String[5];
             String[] test = (String[]) dataList.get(i);
             String countryName = test[0];
             String countryDesc = test[1];
             driver.findElement(By.id("searchInput")).clear();
             driver.findElement(By.id("searchInput")).sendKeys(countryName);
             driver.findElement(By.id("searchButton")).click();
             String str = driver.findElement(
             By.xpath("//h1[@id='firstHeading']/span")).getText();
             System.out.println(countryDesc);
             Assert.assertTrue(str.contains(countryName));
         }
   }
}
public class LoginAttemps扩展了安装程序{
public void testSearchCountry()引发异常{
驱动程序。获取(“http://www.wikipedia.org/wiki/Main_Page");
ReadExcelDemo readXls=新的ReadExcelDemo();
List dataList=readXls.getData();
对于(int i=1;i
我认为问题在于
String[]test=(String[])dataList.get(I)

但是我不确定是否能解决这个异常。。有什么线索吗?

你不能将“字符串”转换成“字符串数组”

只能将字符串放入数组中的插槽中

您可以做的是:

    String theString = "whatever";
    String[] myStrings = { theString };

查看代码,我相信您正在尝试将列表转换为数组,因此您的“问题行”应该如下所示:

String[] test = (String[]) dataList.toArray(new String[dataList.size]);
原因:“i”位置的元素为字符串类型。然而,您正试图将其转换为字符串数组

直接解决方案:从两侧移除[],即从以下位置更改:

String[] test = (String[]) dataList.get(i);
致:


如果您的列表不包含任何类型的数组,这将起作用。

谢谢大家。是的,我正在尝试将列表对象强制转换为字符串数组。我发现了问题。更正代码

    public void testSearchCountry() throws Exception {
        driver.get("http://www.wikipedia.org/wiki/Main_Page");
        ReadExcelDemo readXls = new ReadExcelDemo();
         List dataList = readXls.getData();
        String[] test = new String[dataList.size()];
         for (int i = 1; i < dataList.size(); i++) {
             String[] testCase = new String[5];
             test[i] = dataList.get(i).toString();
             String countryName = test[0];
             String countryDesc = test[1];
             driver.findElement(By.id("searchInput")).clear();
             driver.findElement(By.id("searchInput")).sendKeys(countryName);
             driver.findElement(By.id("searchButton")).click();
             String str = driver.findElement(
             By.xpath("//h1[@id='firstHeading']/span")).getText();
             System.out.println(countryDesc);
             Assert.assertTrue(str.contains(countryName));
         }
   }
public void testSearchCountry()引发异常{
驱动程序。获取(“http://www.wikipedia.org/wiki/Main_Page");
ReadExcelDemo readXls=新的ReadExcelDemo();
List dataList=readXls.getData();
String[]test=新字符串[dataList.size()];
对于(int i=1;i
它成功了

    public void testSearchCountry() throws Exception {
        driver.get("http://www.wikipedia.org/wiki/Main_Page");
        ReadExcelDemo readXls = new ReadExcelDemo();
         List dataList = readXls.getData();
        String[] test = new String[dataList.size()];
         for (int i = 1; i < dataList.size(); i++) {
             String[] testCase = new String[5];
             test[i] = dataList.get(i).toString();
             String countryName = test[0];
             String countryDesc = test[1];
             driver.findElement(By.id("searchInput")).clear();
             driver.findElement(By.id("searchInput")).sendKeys(countryName);
             driver.findElement(By.id("searchButton")).click();
             String str = driver.findElement(
             By.xpath("//h1[@id='firstHeading']/span")).getText();
             System.out.println(countryDesc);
             Assert.assertTrue(str.contains(countryName));
         }
   }