خطای ClassCastException در جاوا در چه مواقعی رخ می دهد؟

+1 رأی
میانگین بازدید روزانه 0.11306 بازدید
خطای ClassCastException در جاوا در چه مواقعی رخ می دهد؟
سوال 7 سال قبل در تالار برنامه نویسی توسط مسافر (912 امتیاز)

1 جواب

+2 رأی

این خطا زمانی رخ می دهد که شما قصد تبدیل دو کلاس با ساختار نامشابه را انجام دهید

مثلا یک عدد 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);
    }
}
جواب 7 سال قبل توسط ali21032002 (45 امتیاز)
ویرایش 7 سال قبل توسط Saeed Zarinfam
می تونید با مثال و تکه کد توضیح بدهید.
لطفا برای تکمیل جواب، جواب خود را ویرایش کنید.

سوال های مشابه

+1 رأی
3 جواب میانگین بازدید روزانه 0.08220 بازدید
0 رأی
0 جواب میانگین بازدید روزانه 0.05140 بازدید
+4 رأی
2 جواب میانگین بازدید روزانه 0.04141 بازدید
+1 رأی
1 جواب میانگین بازدید روزانه 0.1298 بازدید
+2 رأی
1 جواب میانگین بازدید روزانه 0.4171 بازدید
+1 رأی
1 جواب میانگین بازدید روزانه 0.18139 بازدید
+1 رأی
1 جواب میانگین بازدید روزانه 0.2162 بازدید
+1 رأی
1 جواب میانگین بازدید روزانه 0.21319 بازدید
0 رأی
0 جواب میانگین بازدید روزانه 0.08124 بازدید
سوال 4 سال قبل در تالار برنامه نویسی توسط java (0 امتیاز)
0 رأی
1 جواب میانگین بازدید روزانه 0.13203 بازدید
کانال تلگرام جواب یاب
...