ClassCastException:java.lang.String无法强制转换为Ljava.lang.String

时间:2015-03-24 11:22:31

标签: 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/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));
         }
   }
}

我认为问题出在String[] test = (String[]) dataList.get(i);

但我不确定如何解决此异常..有任何线索吗?

4 个答案:

答案 0 :(得分:9)

你不能施放&#34; String&#34;进入&#34;字符串阵列&#34;。

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

你能做的是:

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

答案 1 :(得分:1)

查看代码,我相信您尝试将列表转换为数组,因此您的&#34;问题行&#34;应该如下:

String[] test = (String[]) dataList.toArray(new String[dataList.size]);

答案 2 :(得分:0)

原因:“i”位置的元素是string类型。但是,您正在尝试将其强制转换为字符串数组。

直接解决方案:从两侧移除[],即改为:

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

要:

String test = (String) dataList.get(i);

如果您的List不包含任何类型的数组,这将有效。

答案 3 :(得分:0)

thankyou Guys。是的,我正在尝试将列表对象强制转换为字符串数组。我找到了问题。更正了代码。

    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));
         }
   }

它有效。