این خطا زمانی رخ می دهد که شما قصد تبدیل دو کلاس با ساختار نامشابه را انجام دهید
مثلا یک عدد Long را به Integer تبدیل کنید
یا یک کلاس Cat را در کلاس Human بریزید .
class Test_A {
Test_B b = new Test_B();
public void login()
{
driver.findElement(By.name("userName")).sendKeys(userName);
driver.findElement(By.name("password")).sendKeys(password);
driver.findElement(By.name("login")).click();
b.verifyLoginValidUser();
}
public void logout()
{
driver.findElement(By.linkText("SIGN-OFF")).click();
}
}
class Test_B {
Test_A a = new Test_A()
public void verifyLoginValidUser()
{
if(isElementPresent(By.linkText("SIGN-OFF")))
{
}
a.logout();
} }
مثال بالا یه نمونه از خطا هست که این خطا رو میده
Exception in thread "pool-1-thread-1" java.lang.ClassCastException:
java.lang.StackOverflowError cannot be cast to java.lang.Exception
at supportlibraries.DriverScript.driveTestExecution(DriverScript.java:106)
at allocator.ParallelRunner.invokeTestScript(ParallelRunner.java:60)
at allocator.ParallelRunner.run(ParallelRunner.java:41)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
البته اینجا StackOverflowError پیش میاد که نمی شه به کلاس lang تبدیلش کرد و خطا میده.
این هم یه نمونه دیگه کلاس a را نمی توان به کلاس b تبدیل کرد:
class A {
int a=10;
public void sayhello() {
System.out.println("class A");
}
}
class B extends A {
int a=20;
public void sayhello() {
System.out.println("class B");
}
}
public class HelloWorld {
public static void main(String[] args) throws IOException {
B b = (B) new A();
System.out.println(b.a);
}
}