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

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

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

    Java反射機(jī)制學(xué)習(xí)筆記

    一. 反射機(jī)制描述
          Java的反射機(jī)制允許程序在運(yùn)行時(shí)透過(guò)反射API取得任何一個(gè)已知名稱的class的內(nèi)部信息,主要包括屬性名,屬性名的修飾符,方法名,方法返回值,方法修飾符等信息。

    二. Java類反射中的主要方法
         Constructor getConstructor(Class[] params) -- 獲得使用特殊的參數(shù)類型的公共構(gòu)造函數(shù),

         Constructor[] getConstructors() -- 獲得類的所有公共構(gòu)造函數(shù)

         Constructor getDeclaredConstructor(Class[] params) -- 獲得使用特定參數(shù)類型的構(gòu)造函數(shù)(與接入級(jí)別無(wú)關(guān))

         Constructor[] getDeclaredConstructors() -- 獲得類的所有構(gòu)造函數(shù)(與接入級(jí)別無(wú)關(guān)) 

         獲得字段信息的Class 反射調(diào)用不同于那些用于接入構(gòu)造函數(shù)的調(diào)用,在參數(shù)類型數(shù)組中使用了字段名:

         Field getField(String name) -- 獲得命名的公共字段

         Field[] getFields() -- 獲得類的所有公共字段

         Field getDeclaredField(String name) -- 獲得類聲明的命名的字段

         Field[] getDeclaredFields() -- 獲得類聲明的所有字段 

         用于獲得方法信息函數(shù):

         Method getMethod(String name, Class[] params) -- 使用特定的參數(shù)類型,獲得命名的公共方法

         Method[] getMethods() -- 獲得類的所有公共方法

         Method getDeclaredMethod(String name, Class[] params) -- 使用特寫(xiě)的參數(shù)類型,獲得類聲明的命名的方法

         Method[] getDeclaredMethods() -- 獲得類聲明的所有方法 

    三. Java反射機(jī)制應(yīng)用初探
       
         現(xiàn)在一堆框架搞得人云里霧里的,例如spring等等,大都利用了Java的反射機(jī)制,eg. 大名鼎鼎的IOC.昨天晚上閑著沒(méi)事的時(shí)候,初試了下反射,下面是一個(gè)簡(jiǎn)單的測(cè)試?yán)?
       

    import java.awt.Button;
    import java.lang.reflect.Method;
    import java.util.Hashtable;

    /**
     * 測(cè)試Java的反射機(jī)制
     * 
    @author Amigo Xie(xiexingxing1121@126.com)
     * 
    @since 2007/04/20 21:40
     
    */

    public class ReflectionTest {

        
    /**
         * 
    @param args
         
    */

        
    public static void main(String[] args) throws Exception {
            ReflectionTest reflection 
    = new ReflectionTest();
            reflection.getNameTest();
            System.out.println(
    "");
            reflection.getMethodTest();
        }

        
        
    /**
         * Class的getName()方法測(cè)試
         * 
    @throws Exception
         
    */

        
    public void getNameTest() throws Exception {
            System.out.println(
    "===========begin getNameTest============");
            String name 
    = "amigo";
            Class cls 
    = name.getClass();
            System.out.println(
    "string class name: " + cls.getName());
            
            Button btn 
    = new Button();
            Class btnClass 
    = btn.getClass();
            System.out.println(
    "button class name: " + btnClass.getName());
            Class superBtnClass 
    = btnClass.getSuperclass();
            System.out.println(
    "super button class name: " + superBtnClass.getName());
            
            Class clsTest 
    = Class.forName("java.awt.Button");
            System.out.println(
    "clsTest name: " + clsTest.getName());
            System.out.println(
    "===========end getNameTest============");
        }

        
        
    /**
         * Class的getMethod()方法測(cè)試
         * 
    @throws Exception
         
    */

        
    public void getMethodTest() throws Exception {
            System.out.println(
    "===========begin getMethodTest==========");
            Class cls 
    = Class.forName("ReflectionTest");
            Class ptypes[] 
    = new Class[2];
            ptypes[
    0= Class.forName("java.lang.String");
            ptypes[
    1= Class.forName("java.util.Hashtable");
            Method method 
    = cls.getMethod("testMethod", ptypes);
            Object args[] 
    = new Object[2];
            args[
    0= "hello, my dear!";
            
            Hashtable ht 
    = new Hashtable();
            ht.put(
    "name""amigo");
            args[
    1= ht;
            
            String returnStr 
    = (String) method.invoke(new ReflectionTest(), args);
            System.out.println(
    "returnStr= " + returnStr);
            System.out.println(
    "===========end getMethodTest==========");
        }


        
    public String testMethod(String str, Hashtable ht) throws Exception {
            String returnStr 
    = "return str";
            System.out.println(
    "begin testMethod invoked");
            System.out.println(
    "str= " + str);
            System.out.println(
    "name= " + (String) ht.get("name"));
            System.out.println(
    "end testMethod invoked");
            
    return returnStr;
        }

    }


           控制臺(tái)輸出如下:
           ===========begin getNameTest============
           string class name: java.lang.String
           button class name: java.awt.Button
           super button class name: java.awt.Component
           clsTest name: java.awt.Button
           ===========end getNameTest============

           ===========begin getMethodTest==========
           begin testMethod invoked......
           str= hello, my dear!
           name= amigo
           end testMethod invoked......
           returnStr= return str
           ===========end getMethodTest==========

    posted @ 2008-01-08 17:31 靈! 閱讀(251) | 評(píng)論 (0)編輯 收藏

    備忘——DES加密解密類

         摘要:        做項(xiàng)目時(shí)用到的DES加密解密類,代碼如下: import java.security.*; import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFac...  閱讀全文

    posted @ 2008-01-08 17:25 靈! 閱讀(365) | 評(píng)論 (0)編輯 收藏

    NetBeans6.0正式版發(fā)布

         今天早上一上NetBeans的首頁(yè),看到NetBeans6.0正式版已經(jīng)發(fā)布了,真是Happy。。。
         NetBeans首頁(yè):http://www.netbeans.org
         NetBeans IDE6.0是一個(gè)很出色的IDE,它有一個(gè)很輕巧的、很快速的編輯器,并且將所有NetBeans的產(chǎn)品集成R到了這個(gè)IDE中。NetBeans6.0提供對(duì)Ruby、JRuby和Ruby on Rails的支持,加強(qiáng)了對(duì)Swing的開(kāi)發(fā)支持,它是一個(gè)全新的可視化游戲設(shè)計(jì)器,更新了數(shù)據(jù)綁定支持等。新的安裝版本能使你根據(jù)需要自定義安裝。
         發(fā)布說(shuō)明:
         NetBeans IDE是一個(gè)模塊化的、基于標(biāo)準(zhǔn)的IDE,用Java語(yǔ)言編寫(xiě)。NetBeans項(xiàng)目包括一個(gè)開(kāi)源的用Java編寫(xiě)的IDE,以及一個(gè)應(yīng)用平臺(tái),它可以作為一個(gè)普通的框架來(lái)構(gòu)造各種應(yīng)用程序。
     1.  支持的技術(shù)

    NetBeans IDE6.0支持如下技術(shù),并且在下述的應(yīng)用服務(wù)器中通過(guò)了測(cè)試。如果你打算使用JBoss、WebLogic或者Struts的其余沒(méi)有顯示列出的版本,請(qǐng)注意你可能會(huì)遇到不可預(yù)見(jiàn)的IDE錯(cuò)誤。

    支持的技術(shù):

    l         Enterprise JavaBeans (EJB) 3.0

    l        JAX-WS 2.1

    l         Java Persistence (JSR-220)

    l         JSF1.2 (JSR-127)

    l         Java Servlet 2.5

    l         JavaServer Pages (JSP) 2.1

    l         Struts 1.2.9

    l         Java API for XML-based Remote Procedure Calls (JAX-RPC) 1.6

    l         Java APIs for XML Registries (JAXR) 1.0

    l         Java API for XML Processing (JAXP) 1.4

    l         Java Architecture for XML Binding (JAXB) 2.1

    l         Jsp標(biāo)準(zhǔn)標(biāo)簽庫(kù)(JSTL) 1.1

    經(jīng)過(guò)測(cè)試的應(yīng)用服務(wù)器

    l         GlassFish V1

    l         GlassFish V2

    l         Sun Java System Application Server PE 8.2

    l         Tomcat5.5

    l         Tomcat6.0

    l         JBoss4.0.4

    l         Websphere6.0

    l         WebLogic9.2

    l         WebLogic10.

    注意:如果你使用GlassFish應(yīng)用服務(wù)器,推薦你在NetBeans IDE6.0上使用GlassFish V2.:
        更多信息請(qǐng)參見(jiàn)官方發(fā)布說(shuō)明:http://www.netbeans.org/community/releases/60/relnotes.html

    posted @ 2008-01-08 17:24 靈! 閱讀(255) | 評(píng)論 (0)編輯 收藏

    僅列出標(biāo)題
    共6頁(yè): 上一頁(yè) 1 2 3 4 5 6 
    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    導(dǎo)航

    統(tǒng)計(jì)

    隨筆分類

    隨筆檔案

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 亚洲成av人片不卡无码| 久久午夜夜伦鲁鲁片免费无码| 亚洲黄色免费网址| 亚洲综合亚洲综合网成人| 成人黄页网站免费观看大全| 久久免费精彩视频| 两个人看的www免费高清| 野花视频在线官网免费1| 亚洲色大18成人网站WWW在线播放| 日产亚洲一区二区三区| 亚洲精品tv久久久久久久久| 亚洲精品国精品久久99热| 四虎永久免费观看| 日本高清免费不卡在线| 成年男女男精品免费视频网站 | 国产亚洲福利一区二区免费看| 亚洲国产精品免费观看| 一级毛片在线免费看| 一个人免费视频在线观看www| 人体大胆做受免费视频| 免费精品国自产拍在线播放| 亚洲妇女无套内射精| 亚洲砖码砖专无区2023| 国产精品久久亚洲不卡动漫| 亚洲乱码卡三乱码新区| 亚洲欧洲国产视频| 亚洲自国产拍揄拍| 中文字幕 亚洲 有码 在线| 国产色在线|亚洲| 亚洲国产日韩精品| 亚洲精品av无码喷奶水糖心| 亚洲高清乱码午夜电影网| jizzjizz亚洲日本少妇| 美女视频黄a视频全免费网站一区| 国产亚洲视频在线| 日韩亚洲综合精品国产| 黄色a三级三级三级免费看| 免费人成又黄又爽的视频在线电影| 三级片免费观看久久| 91成人免费福利网站在线| 一个人免费视频观看在线www|