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

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

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

    爪哇一角

    共同探討STRUTS#HIBERNATE#SPRING#EJB等技術
    posts - 3, comments - 6, trackbacks - 0, articles - 99
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    java 反射機制系列例子

    Posted on 2008-11-19 10:35 非洲小白臉 閱讀(141) 評論(0)  編輯  收藏
    下面我以顧客買相機為例來說明Java反射機制的應用。例子中涉及的類和接口有:
    Camera接口:定義了takePhoto()方法。
    Camera01類:一種照相機的類型,實現Camera接口。
    Camera02類:另一種照相機的類型,實現Camera接口。
    Seller類:賣照相機。
    Customer類:買相機,有main方法。
    所有類都放在com包里
      程序如下:
    public interface Camera {
        //聲明照相機必須可以拍照
     public void takePhoto();
    }
    public class Camera01 implements Camera {
     private final int prefixs =300;//300萬象素
     private final double optionZoom=3.5; //3.5倍變焦
     public void takePhoto() {
      System.out.println("Camera01 has taken a photo");
     }
    }
    類似的有
    public class Camera02 implements Camera {
     private final int prefixs =400;
     private final double optionZoom=5;
     public void takePhoto() {
      System.out.println("Camera02 has taken a photo");
     }
    }
    顧客出場了
    public class Customer {
     public static void main(String[] args){
      //找到一個售貨員 
      Seller seller = new Seller();
      //向售貨員詢問兩種相機的信息
      seller.getDescription("com.Camera01");
      seller.getDescription("com.Camera02");
      //覺得Camera02比較好,叫售貨員拿來看
      Camera camera =(Camera)seller.getCamera("com.Camera02");
      //讓售貨員拍張照試一下
      seller.testFuction(camera, "takePhoto");
     }
    }
    Seller類通過Java反射機制實現
    import java.lang.reflect.Field;
    import java.lang.reflect.Method;
    public class Seller {
     //向顧客描述商品信息
     public void getDescription(String type){
      try {
       Class cla = Class.forName(type);
       //生成一個實例對象,在編譯時我們并不知道obj是什么類型。
       Object obj = cla.newInstance();
       //獲得type類型所有已定義類變量及方法。
       Field[] fileds = cla.getDeclaredFields();
       Method[]methods = cla.getDeclaredMethods();
       System.out.println("The arguments of this Camera is:");
       for(int i=0;i<fileds.length;i++){
        fileds[i].setAccessible(true);
        //輸出類變量的定義及obj實例中對應的值
        System.out.println(fileds[i]+":"+fileds[i].get(obj));
       }
       System.out.println("The function of this Camera:");
       for(int i=0;i<methods.length;i++){
        //輸出類中方法的定義
        System.out.println(methods[i]);
       }
       System.out.println();
      } catch (Exception e) {
       System.out.println("Sorry , no such type");
      }
     }
     //使用商品的某個功能
     public void testFuction(Object obj,String function){
      try {
       Class cla = obj.getClass();
       //獲得cla類中定義的無參方法。
       Method m = cla.getMethod(function, null);
       //調用obj中名為function的無參方法。
       m.invoke(obj, null);
      } catch (Exception e) { 
       System.out.println("Sorry , no such function");
       
      } 
     }
     //拿商品給顧客
     public Object getCamera(String type){
      try {
       Class cla = Class.forName(type);
       Object obj = cla.newInstance();
       return obj;
      } catch (Exception e) { 
       System.out.println("Sorry , no such type");
       return null;
      } 
     }
    }

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 色多多免费视频观看区一区| 2022免费国产精品福利在线| 四虎影在线永久免费四虎地址8848aa | 亚洲阿v天堂在线| 24小时免费看片| 欧美亚洲国产SUV| 亚洲国产精华液网站w| 91免费在线播放| 色吊丝免费观看网站| 亚洲视频在线观看视频| 国产在线98福利播放视频免费| 日本高清不卡aⅴ免费网站| 亚洲综合在线一区二区三区| 久久久久亚洲AV成人网| 在线观看成人免费视频不卡| 久久国产福利免费| 亚洲午夜在线播放| 国产V亚洲V天堂无码| 四虎永久在线精品免费网址 | 久久亚洲AV成人无码国产电影 | 免费国产在线观看| 免费A级毛片无码A∨中文字幕下载| 亚洲色大成网站www| 国产成人亚洲综合无码精品| 日韩免费观看视频| 最近中文字幕电影大全免费版| 猫咪免费观看人成网站在线| 91亚洲国产成人久久精品| 亚洲日韩精品无码专区网址| 午夜寂寞在线一级观看免费| 日本在线看片免费| 国产99久久久久久免费看| 亚洲欧好州第一的日产suv| 亚洲日本香蕉视频| 国产aⅴ无码专区亚洲av| 亚洲精品tv久久久久久久久久| 在线观看AV片永久免费| 每天更新的免费av片在线观看| 三上悠亚在线观看免费| 青青草97国产精品免费观看| 亚洲乱码av中文一区二区|