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

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

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

    廉頗老矣,尚能飯否

    java:從技術(shù)到管理

    常用鏈接

    統(tǒng)計(jì)

    最新評(píng)論

    java反射例題【轉(zhuǎn)載】

    例題一 :簡(jiǎn)單例題

    package pkg;
    import java.lang.reflect.*;

    public class Test {
     public static void main(String args[]) {
      try {
       Class c = Class.forName("java.lang.String");
       Method[] m = c.getDeclaredMethods();
       for (int i = 0; i < m.length; i++)
        System.out.println(m[i].toString());
      } catch (Throwable e) {
       System.err.println(e);
      }
     }
    }

    例題二:找出類的方法
    package pkg;

    import java.lang.reflect.*;

    public class Test {
     private int methodDemo(Object p, int x) throws NullPointerException {
      if (p == null)
       throw new NullPointerException();
      return x;
     }

     public static void main(String args[]) {
      try {
       Class cls = Class.forName("pkg.Test");
       Method[] methlist = cls.getDeclaredMethods();
       for (int i = 0; i < methlist.length; i++) {
        Method m = methlist[i];
        System.out.println("name = " + m.getName());
        System.out.println("decl class = " + m.getDeclaringClass());
        Class[] pvec = m.getParameterTypes();
        for (int j = 0; j < pvec.length; j++) {
         System.out.println("param #" + j + " " + pvec[j]);
        }
        Class[] evec = m.getExceptionTypes();
        for (int j = 0; j < evec.length; j++) {
         System.out.println("exc #" + j + " " + evec[j]);
        }
        System.out.println("return type = " + m.getReturnType());
        System.out.println("-----");
       }
      } catch (Throwable e) {
       System.err.println(e);
      }
     }
    }
    例題三:獲取構(gòu)造器信息

    package pkg;

    import java.lang.reflect.*;

    public class Test {
     public Test() {
     }

     protected Test(int i, double d) {
     }

     public static void main(String args[]) {
      try {
       Class cls = Class.forName("pkg.Test");
       Constructor[] ctorlist = cls.getDeclaredConstructors();
       for (int i = 0; i < ctorlist.length; i++) {
        Constructor ct = ctorlist[i];
        System.out.println("name = " + ct.getName());
        System.out.println("decl class = " + ct.getDeclaringClass());
        Class[] pvec = ct.getParameterTypes();
        for (int j = 0; j < pvec.length; j++) {
         System.out.println("param #" + j + " " + pvec[j]);
        }
        Class[] evec = ct.getExceptionTypes();
        for (int j = 0; j < evec.length; j++) {
         System.out.println("exc #" + j + " " + evec[j]);
        }
        System.out.println("-----------------------------------------------------");
       }
      } catch (Throwable e) {
       System.err.println(e);
      }
     }
    }

    例題四:獲取類的字段(域)

    package pkg;

    import java.lang.reflect.*;

    public class Test {
     private double d;
     public static final int i = 37;
     String s = "testing";

     public static void main(String args[]) {
      try {
       Class cls = Class.forName("pkg.Test");
       Field[] fieldlist = cls.getDeclaredFields();//cls.getFields()
       for (int i = 0; i < fieldlist.length; i++) {
        Field fld = fieldlist[i];
        System.out.println("name = " + fld.getName());
        System.out.println("decl class = " + fld.getDeclaringClass());
        System.out.println("type = " + fld.getType());
        int mod = fld.getModifiers();
        System.out.println("modifiers = " + Modifier.toString(mod));
        System.out.println("-----------------------------------------------------");
       }
      } catch (Throwable e) {
       System.err.println(e);
      }
     }
    }
    例題五:根據(jù)方法的名稱來(lái)執(zhí)行方法
    package pkg;

    import java.lang.reflect.*;

    public class Test {
     public int add(int a, int b) {
      return a + b;
     }

     public static void main(String args[]) {
      try {
       Class cls = Class.forName("pkg.Test");
       Class[] partypes = new Class[2];
       partypes[0] = Integer.TYPE;
       partypes[1] = Integer.TYPE;
       Method meth = cls.getMethod("add", partypes);
       //Test methobj = new Test();
       Object methobj = cls.newInstance();
       Object[] arglist = new Object[2];
       arglist[0] = new Integer(37);
       arglist[1] = new Integer(47);
       Object retobj = meth.invoke(methobj, arglist);
       Integer retval = (Integer) retobj;
       System.out.println(retval.intValue());
      } catch (Throwable e) {
       System.err.println(e);
      }
     }
    }

    例題六:創(chuàng)建新的對(duì)象

    package pkg;

    import java.lang.reflect.*;

    public class Test {
     public Test() {
     }

     public Test(int a, int b) {
      System.out.println("a = " + a + " b = " + b);
     }

     public static void main(String args[]) {
      try {
       Class cls = Class.forName("pkg.Test");
       Class[] partypes = new Class[2];
       partypes[0] = Integer.TYPE;
       partypes[1] = Integer.TYPE;
       Constructor ct = cls.getConstructor(partypes);
       Object[] arglist = new Object[2];
       arglist[0] = new Integer(37);
       arglist[1] = new Integer(47);
       Object retobj = ct.newInstance(arglist);

      } catch (Throwable e) {
       System.err.println(e);
      }
     }
    }
    例題七:.改變字段(域)的值
    package pkg;

    import java.lang.reflect.*;

    public class Test {
     public double d;

     public static void main(String args[]) {
      try {
       Class cls = Class.forName("pkg.Test");
       Field fld = cls.getField("d");
       Test test = new Test();
       System.out.println("d = " + test.d);
       fld.setDouble(test, 12.34);
       System.out.println("d = " + test.d);
      } catch (Throwable e) {
       System.err.println(e);
      }
     }
    }
    例題八:數(shù)組

    package pkg;

    import java.lang.reflect.*;

    public class Test {
     public static void main(String args[]) {
      try {
       Class cls = Class.forName("java.lang.String");
       Object arr = Array.newInstance(cls, 10);
       Array.set(arr, 5, "this is a test");
       String s = (String) Array.get(arr, 5);
       System.out.println(s);
      } catch (Throwable e) {
       System.err.println(e);
      }
     }
    }

    例題九:5 x 10 x 15 的整型數(shù)組

    package pkg;

    import java.lang.reflect.*;

    public class Test {
     public static void main(String args[]) {
      int[] dims = new int[] { 5, 10, 15 };
      Object arr = Array.newInstance(Integer.TYPE, dims);
      Object arrobj = Array.get(arr, 3);
      Class cls = arrobj.getClass().getComponentType();
      System.out.println(cls);
      arrobj = Array.get(arrobj, 5);
      Array.setInt(arrobj, 10, 37);
      int arrcast[][][] = (int[][][]) arr;
      System.out.println(arrcast[3][5][10]);
     }
    }




    柳德才
    13691193654
    18942949207
    QQ:422157370
    liudecai_zan@126.com
    湖北-武漢-江夏-廟山

    posted on 2009-04-18 15:04 liudecai_zan@126.com 閱讀(255) 評(píng)論(0)  編輯  收藏 所屬分類: 程序人生

    主站蜘蛛池模板: 亚洲综合激情九月婷婷| 国产精品亚洲不卡一区二区三区| 曰批免费视频播放在线看片二| av无码免费一区二区三区| 亚洲宅男天堂a在线| 国产曰批免费视频播放免费s | 中文字幕人成人乱码亚洲电影 | 亚洲精品WWW久久久久久| 亚洲a∨无码精品色午夜| 四虎影视在线永久免费观看| 无码AV动漫精品一区二区免费| 国产精品亚洲综合一区| 中国一级特黄高清免费的大片中国一级黄色片 | 免费无码一区二区三区蜜桃大| 亚洲aⅴ无码专区在线观看| 国产精品冒白浆免费视频| 免费激情网站国产高清第一页| 国产精品亚洲αv天堂无码| 久久免费精品一区二区| 日本阿v免费费视频完整版| 亚洲一区二区三区国产精品无码| 成人免费视频观看无遮挡| 国产成人精品亚洲一区| 国产精品亚洲高清一区二区| 麻豆精品成人免费国产片| 亚洲黄色三级网站| 啦啦啦在线免费视频| 又大又硬又粗又黄的视频免费看 | 亚洲冬月枫中文字幕在线看| 成人免费午夜视频| 国产免费一级高清淫曰本片| 亚洲人成影院在线| 日本免费一区尤物| 国产情侣久久久久aⅴ免费| 亚洲人成7777影视在线观看| 无码不卡亚洲成?人片| 日韩在线不卡免费视频一区| 亚洲成AV人影片在线观看| 亚洲国产成人一区二区三区| 日本不卡免费新一二三区| 麻豆精品不卡国产免费看|