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

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

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

    飛翔的起點

    從這里出發

    導航

    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    統計

    常用鏈接

    留言簿(5)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    我的評論

    re: 反射機制補充 forgood 2009-01-11 17:52  
    JAVA反射機制
    JAVA反射機制是在運行狀態中,對于任意一個類,都能夠知道這個類的所有屬性和方法;對于任意一個對象,都能夠調用它的任意一個方法;這種動態獲取的信息以及動態調用對象的方法的功能稱為java語言的反射機制。
    Java反射機制主要提供了以下功能: 在運行時判斷任意一個對象所屬的類;在運行時構造任意一個類的對象;在運行時判斷任意一個類所具有的成員變量和方法;在運行時調用任意一個對象的方法;生成動態代理。
    1. 得到某個對象的屬性

    1 public Object getProperty(Object owner, String fieldName) throws Exception {
    2 Class ownerClass = owner.getClass();
    3
    4 Field field = ownerClass.getField(fieldName);
    5
    6 Object property = field.get(owner);
    7
    8 return property;
    9 }
    Class ownerClass = owner.getClass():得到該對象的Class。

    Field field = ownerClass.getField(fieldName):通過Class得到類聲明的屬性。

    Object property = field.get(owner):通過對象得到該屬性的實例,如果這個屬性是非公有的,這里會報IllegalAccessException。

    2. 得到某個類的靜態屬性

    1 public Object getStaticProperty(String className, String fieldName)
    2 throws Exception {
    3 Class ownerClass = Class.forName(className);
    4
    5 Field field = ownerClass.getField(fieldName);
    6
    7 Object property = field.get(ownerClass);
    8
    9 return property;
    10 }

    Class ownerClass = Class.forName(className) :首先得到這個類的Class。

    Field field = ownerClass.getField(fieldName):和上面一樣,通過Class得到類聲明的屬性。

    Object property = field.get(ownerClass) :這里和上面有些不同,因為該屬性是靜態的,所以直接從類的Class里取。

    3. 執行某對象的方法

    1 public Object invokeMethod(Object owner, String methodName, Object[] args) throws Exception {
    2
    3 Class ownerClass = owner.getClass();
    4
    5 Class[] argsClass = new Class[args.length];
    6
    7 for (int i = 0, j = args.length; i < j; i++) {
    8 argsClass[i] = args[i].getClass();
    9 }
    10
    11 Method method = ownerClass.getMethod(methodName, argsClass);
    12
    13 return method.invoke(owner, args);
    14 }
    Class owner_class = owner.getClass() :首先還是必須得到這個對象的Class。

    5~9行:配置參數的Class數組,作為尋找Method的條件。

    Method method = ownerClass.getMethod(methodName, argsClass):通過Method名和參數的Class數組得到要執行的Method。

    method.invoke(owner, args):執行該Method,invoke方法的參數是執行這個方法的對象,和參數數組。返回值是Object,也既是該方法的返回值。

    4. 執行某個類的靜態方法

    1 public Object invokeStaticMethod(String className, String methodName,
    2 Object[] args) throws Exception {
    3 Class ownerClass = Class.forName(className);
    4
    5 Class[] argsClass = new Class[args.length];
    6
    7 for (int i = 0, j = args.length; i < j; i++) {
    8 argsClass[i] = args[i].getClass();
    9 }
    10
    11 Method method = ownerClass.getMethod(methodName, argsClass);
    12
    13 return method.invoke(null, args);
    14 }

    基本的原理和實例3相同,不同點是最后一行,invoke的一個參數是null,因為這是靜態方法,不需要借助實例運行。

    5. 新建實例
    1
    2 public Object newInstance(String className, Object[] args) throws Exception {
    3 Class newoneClass = Class.forName(className);
    4
    5 Class[] argsClass = new Class[args.length];
    6
    7 for (int i = 0, j = args.length; i < j; i++) {
    8 argsClass[i] = args[i].getClass();
    9 }
    10
    11 Constructor cons = newoneClass.getConstructor(argsClass);
    12
    13 return cons.newInstance(args);
    14
    15 }

    這里說的方法是執行帶參數的構造函數來新建實例的方法。如果不需要參數,可以直接使用newoneClass.newInstance()來實現。

    Class newoneClass = Class.forName(className):第一步,得到要構造的實例的Class。

    第5~第9行:得到參數的Class數組。

    Constructor cons = newoneClass.getConstructor(argsClass):得到構造子。

    cons.newInstance(args):新建實例。

    6. 判斷是否為某個類的實例

    1 public boolean isInstance(Object obj, Class cls) {
    2 return cls.isInstance(obj);
    3 }

    7. 得到數組中的某個元素
    1 public Object getByArray(Object array, int index) {
    2 return Array.get(array,index);
    3 }


    re: 暢想OSGi DevCon2008[未登錄] forgood 2008-06-20 09:18  
    跟著大哥學些新技術、新思想,一直關注你!!!
    re: Html Parse 最佳實踐 forgood 2008-06-19 12:01  
    不是吧,在前面簡介的概述一下實現的功能,這樣看代碼多浪費時間呀。呵呵
    re: IT人這一輩子 forgood 2008-06-06 17:26  
    技術只是人生路上的一個臺階。
    re: 關于oracle的一些問題 forgood 2008-04-23 09:55  
    select * into destTbl from srcTbl

    insert into destTbl(fld1, fld2) select fld1, 5 from srcTbl

    以上兩句都是將 srcTbl 的數據插入到 destTbl,但兩句又有區別的。

    第一句(select into from)要求目標表(destTbl)不存在,因為在插入時會自動創建。

    第二句(insert into select from)要求目標表(destTbl)存在,由于目標表已經存在,所以我們除了插入源表(srcTbl)的字段外,還可以插入常量
    re: Collection框架二 forgood 2008-04-17 16:50  
    add(E e):在當前表的末尾插入元素,如果在前面表不滿的情況下,也是很高效的,直接插入到末尾,但是如果在當前表已經滿的情況下,就要重新生成一個比當前表大小更大的新表,新表的大小是當前表大小的1.5倍加1,比如當前表長度為20的,新表的大小就為31,還需要把當前表元素復制到新表中去,然后把當前表引用指向新表,最后把數值插入到表末尾,所以這種操作是非常低效的。
    re: java中的String和StringBuffer類 forgood 2008-04-14 16:38  
    StringBuilder和StringBuffer差不多,但是StringBuilder是不安全的,而StringBuffer是安全的
    re: 關于oracle的一些問題 forgood 2008-04-14 16:31  
    select 字段...... into 表1 from 條件。這個語句中在執行前,表1是不存在的,在執行這條語句的時候會自動創建表1.
    re: 關于oracle的一些問題 forgood 2008-04-09 10:01  
    刪除重復記錄中的第一種方法不是很明白????
    re: File類及子類的總結 forgood 2008-03-26 18:12  
    我覺得它只是針對隨機讀取吧。
    re: 二進制文件和文本文件 forgood 2008-03-21 14:23  
    也可以這樣理解:文本文件由位序列和包含字符序列的字節組成,一般文本文件可以直接閱讀。二進制文件大部分情況下又計算機程序生成和處理。
    re: 心情 forgood 2008-01-03 14:18  
    共同努力!!!!!!!!!
    re: java重載的解析 forgood 2007-12-18 18:54  
    是呀,我也感覺如此,但是細細看的話,會發現好多經常遇到的問題,仔細的看看,可以鞏固\復習一些知識,
    共同進步,
    re: 天天都有進步 forgood 2007-12-06 17:28  
    native2ascii.exe 進行漢字到Unicode的轉化

    資源文件需要進行Unicode編碼,方法是使用這個jdk提供的工具來轉換native2ascii
    unicode到ascii的方式:
    native2ascii -reverse 源文件名 目標文件名
    ascii到unicode方式:
    native2ascii 源文件名 目標文件名
    主站蜘蛛池模板: 亚洲精品动漫人成3d在线 | 国产AV无码专区亚洲AV麻豆丫| 在线播放免费人成毛片乱码| 国产亚洲美女精品久久久| 人人公开免费超级碰碰碰视频| 亚洲?v女人的天堂在线观看| CAOPORM国产精品视频免费| 久久国产精品2020免费m3u8| 亚洲日本中文字幕| 亚洲免费观看在线视频| 亚洲精品中文字幕麻豆| 美女视频黄a视频全免费| 亚洲日本一区二区三区在线| 在线观看免费无码视频| 免费无码不卡视频在线观看| 亚洲韩国—中文字幕| 最近免费中文字幕大全免费 | 亚洲色大情网站www| 国产三级在线免费| 免费观看国产精品| 久久国产美女免费观看精品| 免费观看午夜在线欧差毛片| caoporm碰最新免费公开视频| 国产亚洲免费的视频看 | 国产精品国产免费无码专区不卡 | 亚洲视频一区二区在线观看| 好男人看视频免费2019中文| 真正全免费视频a毛片| 久久亚洲成a人片| 两个人看的www免费视频| 亚洲黄色在线播放| 国产成人免费片在线观看| 成全视成人免费观看在线看| 亚洲国产成人五月综合网| 免费成人高清在线视频| 亚洲午夜精品一区二区麻豆| 国产日产亚洲系列最新| 日日麻批免费40分钟日本的| 亚洲国产精品久久丫| 久久久久av无码免费网| 免费在线观看一区|