<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    ClassCastException

    ClassCastException類型轉換異常,是一個運行時異常。

     

    非常常見就是不同類型之間的強制類型轉換就會拋出ClassCastException異常。還有一種就是不同ClassLoader加載的相同的類型轉換也會拋出ClassCastException。接下來我用代碼來詳細解釋下。

     

    1、 強制類型轉換

    public class ClassCastExceptionTest {

     

        /**

         * @param args

         */

        public static void main(String[] args) {

           Animal a1 = new Dog(); //1

           Animal a2 = new Cat(); //2

           Dog d1 = (Dog)a1;       //3

           Dog d2 = (Dog)a2;       //4

        }

    }

    把貓轉換成狗,是不對的。后面注釋為4的代碼是無法正常賦值的。

    Exception in thread "main" java.lang.ClassCastException: Cat cannot be cast to Dog

        at ClassCastExceptionTest.main(ClassCastExceptionTest.java:13)

     

     

    2、 不同classloader加載相同類型類之間的轉換

    import java.io.File;

    import java.net.URL;

    import java.net.URLClassLoader;

     

     

    public class ClassCastExceptionTest {

        /**

         * @param args

         */

        public static void main(String[] args) throws Exception {

           File file = new File(Thread.currentThread().getContextClassLoader().getResource("").getPath());

           URL[] urls = {file.toURL()};

           URLClassLoader classloader1 = new URLClassLoader(urls, ClassLoader.getSystemClassLoader().getParent());

           Class classloader1Animal1 = classloader1.loadClass("Dog");

           Dog dog1 = (Dog)classloader1Animal1.newInstance();

          

           URLClassLoader classloader2 = new URLClassLoader(urls, ClassLoader.getSystemClassLoader().getParent());

           Class classloader1Animal2 = classloader1.loadClass("Dog");

           Dog dog2 = (Dog)classloader1Animal1.newInstance();

          

           dog1 = dog2;

        }

     

    }

     

    代碼中我們看到dog1=dog2,這樣賦值是會拋異常的。

    Exception in thread "main" java.lang.ClassCastException: Dog cannot be cast to Dog

        at ClassCastExceptionTest.main(ClassCastExceptionTest.java:17)

     

    以后大家遇到classCastException的時候要注意了,不一定是強制類型轉換導致的,也有可能不同的classloader加載了相同的類,然后這個類不同的實例進行賦值。

    posted on 2012-01-10 16:07 yangpingyu 閱讀(579) 評論(0)  編輯  收藏 所屬分類: java基礎

    <2012年1月>
    25262728293031
    1234567
    891011121314
    15161718192021
    22232425262728
    2930311234

    導航

    統計

    常用鏈接

    留言簿

    隨筆分類

    隨筆檔案

    收藏夾

    linux

    產品交互

    分析,設計,架構

    安全

    技術牛人

    數據庫

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲AV无码成人精品区在线观看| 免费一级国产生活片| 亚洲AV无码精品无码麻豆| 一本岛v免费不卡一二三区| 亚洲国产成人精品无码久久久久久综合 | 一级毛片无遮挡免费全部| 免费精品国产自产拍观看| 精品国产日韩亚洲一区在线| 欧洲美熟女乱又伦免费视频| 无码天堂亚洲国产AV| 亚洲国产成人久久综合野外| 精品97国产免费人成视频| 亚洲成a人片在线观看无码专区| 最近免费中文字幕MV在线视频3 | 免费毛片毛片网址| 亚洲精品你懂的在线观看| 91视频免费观看| 亚洲短视频在线观看| 成人无码区免费视频观看| 美女视频黄频a免费大全视频| 国产亚洲精品资在线| 黄网站色视频免费在线观看的a站最新| 亚洲好看的理论片电影| 野花高清在线电影观看免费视频| 亚洲精品乱码久久久久久V| 亚洲国产一成久久精品国产成人综合| 在线观看黄片免费入口不卡| 亚洲一区二区电影| 德国女人一级毛片免费| 精品久久久久久国产免费了 | 亚洲精品成人区在线观看| a毛片全部免费播放| 亚洲国产综合在线| 亚洲VA综合VA国产产VA中| 无码成A毛片免费| 亚洲国产欧洲综合997久久| 亚洲中文字幕久久精品无码APP| 蜜臀AV免费一区二区三区| 美女一级毛片免费观看| 亚洲AV无码国产在丝袜线观看| 在线免费观看污网站|