国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

Java語言基礎:RTTI

發布時間:2011-3-29 19:34    發布者:1770309616
關鍵詞: Java語言基礎 , RTTI
Java語言基礎.pdf (205.39 KB)


1.  每個類都有一個Class對象,當我們在運行期第一次生成類的實例時,JVM就加載這個類的Class對象,然后用這個Class對象來創建類實例;Class類似于Delphi中的引用類TClass,用于保存類的運行時信息。

2.  Class的static方法forName()用于查找某個類的Class對象,如果forName找不到你要的類的Class對象,會拋出ClassNotFoundException異常:
view plaincopy to clipboardprint?
01.class A{   
02.}   
03.   
04.public class Main {               
05.    public static void main(String[] args) {   
06.        try {   
07.            Class cls = Class.forName("A");   
08.            System.out.println(cls.getName());   
09.        } catch (ClassNotFoundException e) {   
10.            e.printStackTrace();   
11.        }   
12.    }   
13.}  
class A{
}

public class Main {            
    public static void main(String[] args) {
        try {
            Class cls = Class.forName("A");
            System.out.println(cls.getName());
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
}
3.  查找類的Class對象的另一個方法是直接調用類.class,這會在編譯期就檢查是否正確,因此不需要捕獲異常:
view plaincopy to clipboardprint?
01.class A{   
02.}   
03.   
04.public class Main {               
05.    public static void main(String[] args) {   
06.        // 類有class關鍵字   
07.        Class acls = A.class;   
08.        System.out.println(acls.getName());   
09.        // 普通類型也有   
10.        Class icls = int.class;   
11.        System.out.println(icls.getName());   
12.    }   
13.}  
class A{
}

public class Main {            
    public static void main(String[] args) {
        // 類有class關鍵字
        Class
acls = A.class;
        System.out.println(acls.getName());
        // 普通類型也有
        Class icls = int.class;
        System.out.println(icls.getName());
    }
}
4.  判斷兩個對象是否屬于同一個類,可以通過比較他們的class的方式,通過對象的getClass()方法可以得Class對象:
view plaincopy to clipboardprint?
01.class A{   
02.}   
03.class B extends A {   
04.}   
05.public class Main {               
06.    public static void main(String[] args) {   
07.        A a = new B();   
08.        B b = new B();   
09.        // a和b都B的實例,所以為true   
10.        if (a.getClass() == b.getClass())   
11.            System.out.print("yes");   
12.        else  
13.            System.out.print("no");   
14.    }   
15.}  
class A{
}
class B extends A {
}
public class Main {            
    public static void main(String[] args) {
        A a = new B();
        B b = new B();
        // a和b都B的實例,所以為true
        if (a.getClass() == b.getClass())
            System.out.print("yes");
        else
            System.out.print("no");
    }
}

5.  要判斷對象是否繼承或屬于某個類,可以通過兩個方法:1是使用instanceof關鍵字,2是使用Class.isInstance方法:
view plaincopy to clipboardprint?
01.class A{   
02.}   
03.class B extends A {   
04.}   
05.public class Main {               
06.    public static void main(String[] args) {   
07.        A a = new B();   
08.        B b = new B();   
09.        // 使用instanceof關鍵字,a是否A或其子類的對象   
10.        if (a instanceof A)   
11.            System.out.println("Yes");   
12.        // 使用instanceof關鍵字,b是否B或其子類的對象   
13.        if (b instanceof B)   
14.            System.out.println("Yes");   
15.        // 使用isInstance方法   
16.        if (A.class.isInstance(a))   
17.            System.out.println("Yes");   
18.        if (B.class.isInstance(a))   
19.            System.out.println("Yes");   
20.    }   
21.}  
class A{
}
class B extends A {
}
public class Main {            
    public static void main(String[] args) {
        A a = new B();
        B b = new B();
        // 使用instanceof關鍵字,a是否A或其子類的對象
        if (a instanceof A)
            System.out.println("Yes");
        // 使用instanceof關鍵字,b是否B或其子類的對象
        if (b instanceof B)
            System.out.println("Yes");
        // 使用isInstance方法
        if (A.class.isInstance(a))
            System.out.println("Yes");
        if (B.class.isInstance(a))
            System.out.println("Yes");
    }
}

6.  Class.NewInstance可以創建一個類實例,該類必須有默認構造函數,否則會拋出InstantiationException異常:
view plaincopy to clipboardprint?
01.class A{   
02.}   
03.public class Main {               
04.    public static void main(String[] args) {   
05.        try {   
06.            A a = A.class.newInstance();   
07.        } catch (InstantiationException e) {   
08.            e.printStackTrace();   
09.        } catch (IllegalAccessException e) {   
10.            e.printStackTrace();   
11.        }   
12.    }   
13.}  
class A{
}
public class Main {            
    public static void main(String[] args) {
        try {
            A a = A.class.newInstance();
        } catch (InstantiationException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
    }
}

7.  Class還提供了一些更強大的方法,可以得到類的更多信息,比如:getSuperclass: 取得父類的Class對象;getInterfaces: 取得實現的接口數組;還有其他很多方法。
本文地址:http://m.qingdxww.cn/thread-60385-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • 使用SAM-IoT Wx v2開發板演示AWS IoT Core應用程序
  • 使用Harmony3加速TCP/IP應用的開發培訓教程
  • 集成高級模擬外設的PIC18F-Q71家族介紹培訓教程
  • 探索PIC16F13145 MCU系列——快速概覽
  • 貿澤電子(Mouser)專區
關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 色图综合| 青春草在线| 欧美在线观看第一页| 天天射天天干| 色批网站www| 一1黄绝一级绿象| 亚洲另类老妇videos| 91国内精品久久久久免费影院| 97午夜理论片影院在线播放| yw193.c国产在线观看| 日本一本道高清码v| 亚洲天堂亚洲天堂| 四虎精品在线视频| 天使萌一区二区在线观看| 一区二区在线观看| a视频免费看| 国产美女久久久久久久久久久| 牛牛在线精品视频(正)| 约艺术院校96年清纯白嫩| 欧美成人一级视频| 午夜视频免费在线播放| 天天插视频| 本庄优花aⅴ全部在线影片 | 一区在线视频| 麻豆精品传媒卡一卡二传媒短视频 | 一级欧美视频| 国产亚洲人成在线视频 | 亚洲H成年动漫在线观看不卡| 西班牙一级特级毛片dvd| 日本成人在线免费| 中文字幕精品一区影音先锋| 性做久久久久久久免费观看| 91精品视频网站| 色戒无删减流畅完整版| 欧美一级免费看| 青青草视频免费在线| 亚洲日韩视频免费观看| 四虎1515hhcom| 粗好大用力好深快点漫画| 久久精品亚洲AV无码三区观看| 欧美伊人久久大香线蕉综合69|