亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java中java.lang.ClassCastException異常原因及解決方法

 更新時間:2022年01月24日 10:39:26   作者:HoneyMoose  
大家好,本篇文章主要講的是Java中java.lang.ClassCastException異常原因及解決方法,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下

通常我們在 OOP 設(shè)計中都會使用到繼承。

Java 繼承關(guān)系中的 java.lang.ClassCastException 錯誤_java

??但是在繼承對象之間的強(qiáng)制轉(zhuǎn)換可能會遇到??java.lang.ClassCastException??異常的錯誤。

錯誤的日志如下:

19:58:25.010 [http-nio-8080-exec-5] ERROR o.a.c.c.C.[.[.[.[dispatcherServlet] - Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.ClassCastException: class com.ossez.usreio.mls.common.models.response.ListingResponse cannot be cast to class com.ossez.usreio.mls.common.models.response.ListingDetailResponse (com.ossez.usreio.mls.common.models.response.ListingResponse and com.ossez.usreio.mls.common.models.response.ListingDetailResponse are in unnamed module of loader org.springframework.boot.loader.LaunchedURLClassLoader @4ee285c6)] with root cause
java.lang.ClassCastException: class com.ossez.usreio.mls.common.models.response.ListingResponse cannot be cast to class com.ossez.usreio.mls.common.models.response.ListingDetailResponse (com.ossez.usreio.mls.common.models.response.ListingResponse and com.ossez.usreio.mls.common.models.response.ListingDetailResponse are in unnamed module of loader org.springframework.boot.loader.LaunchedURLClassLoader @4ee285c6)

Java 繼承關(guān)系中的 java.lang.ClassCastException 錯誤_父類_02

??問題和原因

這個問題出現(xiàn)的原因就是繼承類之間強(qiáng)制轉(zhuǎn)換的錯誤。

同時這個錯誤是運(yùn)行時錯誤,不是編譯錯誤,因此你編譯的時候是沒有這個錯誤的。

考察下面的代碼:

Parent b = new parent();
Child c = (Child) b ;

采用該方法不能實(shí)現(xiàn)對象類型由超類向子類的轉(zhuǎn)換。

上面的原因是父類的對象是由父類創(chuàng)建的,然后你嘗試將父類創(chuàng)建的對象強(qiáng)制轉(zhuǎn)換到子類中。

因?yàn)楦割悇?chuàng)建的對象和子類需要創(chuàng)建的對象分別使用不同的地址空間,那在轉(zhuǎn)換的時候?qū)霈F(xiàn)地址空間引用的錯誤,因此 JVM 會認(rèn)為你將 2 個完全不同類型的對象進(jìn)行轉(zhuǎn)換,這個時候出現(xiàn)上面的運(yùn)行時錯誤。

要解決這個問題的辦法就是在創(chuàng)建父類的時候使用子類來創(chuàng)建,并且強(qiáng)制將創(chuàng)建的父類轉(zhuǎn)換為子類就可以了。

使用這種創(chuàng)建方法就能保證使用相同的地址空間。

將上面的語句改成:

Parent b = new Child ();
Child c = (Child) b ;

就可以了。

總結(jié)

到此這篇關(guān)于Java中java.lang.ClassCastException異常原因及解決方法的文章就介紹到這了,更多相關(guān)java.lang.ClassCastException異常內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論