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

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

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

    小方的Java博客

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      27 隨筆 :: 17 文章 :: 115 評論 :: 0 Trackbacks
    1. Constructor
    /*
    介紹:
    Constructor?提供關于類的單個構造方法的信息以及對它的訪問權限。

    輸出:
    java.util.ArrayList:?Collection?
    java.util.ArrayList:?int?
    java.util.ArrayList:?
    */

    package ?api.java.lang.reflect;

    import ?java.lang.reflect.Constructor;

    public ? class ?Class_Constructor? {

    ????
    public ? static ? void ?main(String[]?args)? {
    ????????
    try ? {
    ????????????Class?c?
    = ?Class.forName( " java.util.ArrayList " );

    ????????????Constructor?constructors[]?
    = ?c.getConstructors();
    ????????????
    for ?( int ?i? = ? 0 ;?i? < ?constructors.length;?i ++ )? {
    ????????????????System.out.print(constructors[i].getName()?
    + ? " :? " );
    ????????????????Class?parameters[];
    ????????????????
    // 分別得到ArrayList三個構造函數(shù)的參數(shù)
    ????????????????parameters? = ?constructors[i].getParameterTypes();
    ????????????????
    for ?( int ?j? = ? 0 ;?j? < ?parameters.length;?j ++ )? {
    ????????????????????
    // 得到參數(shù)名
    ????????????????????String?s? = ?parameters[j].getName();
    ????????????????????s?
    = ?s.substring(s.lastIndexOf( " . " )? + ? 1 ,?s.length());
    ????????????????????System.out.print(s?
    + ? " ? " );
    ????????????????}

    ????????????????System.out.println(
    "" );
    ????????????}

    ????????}
    ? catch ?(Exception?ex)? {
    ????????????ex.printStackTrace();
    ????????}

    ????}

    }

    主要經(jīng)驗值獲得:
    1.java.lang.reflect.Constructor 作用
    2.如何獲得一個類構造函數(shù)的參數(shù)

    次要經(jīng)驗值獲得:

    1.s?=?s.substring(s.lastIndexOf(".")?+?1,?s.length());? 得到指定符號后的字符串

    ----------------------------------------------------------------------------------------------

    2. Skill_HiddenFieldModification
    /*
    輸出:
    Before:?[a=21.25,?b=54.5,?c=5665,?d=2043,?e=3121,?f=1019]
    After:?[a=21.25,?b=54.5,?c=0,?d=0,?e=0,?f=0]
    ?
    */

    package?api.java.lang.reflect;

    import?java.lang.reflect.Field;

    public?class?Skill_HiddenFieldModification?{

    ????
    //?把所有int置為0
    ????public?static?void?initIntFields(final?Object?obj)?{
    ????????
    try?{
    ????????????
    /*
    ?????????????*?getDeclaredFields()?返回?Field?對象的一個數(shù)組,這些對象反映此?Class
    ?????????????*?對象所表示的類或接口所聲明的所有字段,包括公共、保護、默認(包)訪問和私有字段,但不包括繼承的字段。
    ?????????????
    */

    ????????????Field[]?fields?
    =?obj.getClass().getDeclaredFields();
    ????????????
    for?(int?idx?=?0;?idx?<?fields.length;?idx++)?{
    ????????????????
    //如果是int
    ????????????????if?(fields[idx].getType()?==?int.class)?{
    ????????????????????
    /*?setAccessible(boolean)
    ?????????????????????*?將此對象的?accessible?標志設置為指示的布爾值。值為?true?則指示反射的對象在使用時應該取消
    ?????????????????????*?Java?語言訪問檢查。值為?false?則指示反射的對象應該實施?Java?語言訪問檢查。
    ?????????????????????
    */
    ?
    ????????????????????fields[idx].setAccessible(
    true);
    ????????????????????fields[idx].setInt(obj,?
    0);
    ????????????????}

    ????????????}

    ????????}
    ?catch?(final?IllegalAccessException?ex)?{
    ????????????
    throw?new?RuntimeException(ex);
    ????????}

    ????}


    ????
    public?static?final?void?main(final?String[]?args)?{
    ????????SomeNumbers?value?
    =?new?SomeNumbers();
    ????????System.out.println(
    "Before:?"?+?value);
    ????????initIntFields(value);
    ????????System.out.println(
    "After:?"?+?value);
    ????}

    }


    class?SomeNumbers?{

    ????
    public?double?a?=?21.25d;

    ????
    public?float?b?=?54.5f;

    ????
    public?int?c?=?5665;

    ????
    public?int?d?=?2043;

    ????
    protected?int?e?=?3121;

    ????
    private?int?f?=?1019;

    ????
    public?String?toString()?{
    ????????
    return?new?String("[a="?+?a?+?",?b="?+?b?+?",?c="?+?c?+?",?d="?+?d
    ????????????????
    +?",?e="?+?e?+?",?f="?+?f?+?"]");
    ????}

    }

    主要經(jīng)驗值獲得:
    1.java.lang.reflect.Field 作用
    2.基本類型過濾的方法

    ---------------------------------------------------------------------------------------------

    3. Class_MethodgetModifiers

    /*
    輸出:
    Public?Methods:
    ?a1
    ?a2
    */

    package?api.java.lang.reflect;

    import?java.lang.reflect.Method;
    import?java.lang.reflect.Modifier;

    public?class?Class_MethodgetModifiers?{

    ????
    public?static?void?main(String[]?args)?{
    ????????
    try?{
    ????????????MyClass?a?
    =?new?MyClass();
    ????????????Class?c?
    =?a.getClass();
    ????????????System.out.println(
    "Public?Methods:");
    ????????????
    //得到所有類的方法
    ????????????Method?methods[]?=?c.getDeclaredMethods();
    ????????????
    for?(int?i?=?0;?i?<?methods.length;?i++)?{
    ????????????????
    //得到方法的修飾符
    ????????????????int?modifiers?=?methods[i].getModifiers();
    ????????????????
    if?(Modifier.isPublic(modifiers))?{
    ????????????????????System.out.println(
    "?"?+?methods[i].getName());
    ????????????????}

    ????????????}

    ????????}
    ?catch?(Exception?e)?{
    ????????????System.out.println(
    "Exception:?"?+?e);
    ????????}


    ????}

    }


    class?MyClass?{
    ????
    public?void?a1()?{}
    ????
    public?void?a2()?{}
    ????
    protected?void?a3()?{}
    ????
    private?void?a4()?{}
    }

    主要經(jīng)驗值獲得:
    1.java.lang.reflect.Method 作用
    2.java.lang.reflect.Modifier 作用


    ---------------------------------------------------------------------------------------------

    4. Method_Invoke

    /*
    ?輸出:
    ?public?void?api.java.lang.reflect.MyClass2.print(java.lang.String,int)
    ?inovke?succeed:haha10
    ?
    */

    package?api.java.lang.reflect;

    import?java.lang.reflect.InvocationTargetException;
    import?java.lang.reflect.Method;

    public?class?Method_Invoke?{

    ????
    public?static?void?main(String[]?args)?{
    ????????
    try?{
    ????????????MyClass2?myclass?
    =?new?MyClass2();
    ????????????Class?c?
    =?myclass.getClass();

    ????????????Class[]?cc?
    =?new?Class[2];
    ????????????cc[
    0]?=?String.class;
    ????????????cc[
    1]?=?Integer.TYPE;

    ????????????
    /*
    ?????????????*?getMethod(String,Class[]?返回一個?Method?對象,它反映此?Class
    ?????????????*?對象所表示的類或接口的指定公共成員方法。name?參數(shù)是一個?String,用于指定所需方法的簡稱。parameterTypes
    ?????????????*?參數(shù)是按聲明順序標識該方法形式參數(shù)類型的?Class?對象的一個數(shù)組。如果?parameterTypes?為
    ?????????????*?null,則按空數(shù)組處理。
    ?????????????
    */

    ????????????Method?m?
    =?c.getMethod("print",?cc);
    ????????????System.out.println(m);

    ????????????Object?arglist[]?
    =?new?Object[2];
    ????????????arglist[
    0]?=?new?String("haha");
    ????????????arglist[
    1]?=?new?Integer(10);
    ????????????
    /*
    ?????????????*?Object?invoke(Object,?Object[])
    ?????????????*?Object?-?從中調用基礎方法的對象?
    ?????????????*?Object[]?-?用于方法調用的參數(shù)
    ?????????????
    */

    ????????????m.invoke(myclass,?arglist);
    ????????}
    ?catch?(NoSuchMethodException?e2)?{
    ????????????System.out.println(
    "method?doesn't?exist");
    ????????}
    ?catch?(IllegalAccessException?e3)?{
    ????????????System.out.println(
    "no?permission?to?invoke?that?method");
    ????????}
    ?catch?(InvocationTargetException?e)?{
    ????????????System.out
    ????????????????????.println(
    "an?exception?ocurred?while?invoking?that?method");
    ????????????System.out.println(
    "Method?threw?an:?"?+?e.getTargetException());
    ????????}

    ????}

    }


    class?MyClass2?{
    ????
    public?void?print(String?str,?int?i)?{
    ????????System.out.print(
    "inovke?succeed:"?+?str?+?i);
    ????}

    }


    主要經(jīng)驗值獲得:
    1.java.lang.reflect.Method 的 invoke() 的作用

    ---------------------------------------------------------------------------------------------

    5.Class_ParameterizedType
    /*
    輸出:
    java.util.ArrayList<java.lang.String>
    class?java.lang.String
    */

    package?api.java.lang.reflect;

    import?java.lang.reflect.ParameterizedType;
    import?java.lang.reflect.Type;
    import?java.util.ArrayList;

    public?class?Class_ParameterizedType?{

    ????
    /**
    ?????*?
    @param?args
    ?????
    */

    ????
    public?static?void?main(String[]?args)?{
    ????????Type?type?
    =?StringList.class.getGenericSuperclass();
    ????????System.out.println(type);?
    ????????ParameterizedType?pt?
    =?(ParameterizedType)?type;
    ????????System.out.println(pt.getActualTypeArguments()[
    0]);

    ????}

    }


    class?StringList?extends?ArrayList<String>?{
    }


    主要經(jīng)驗值獲得:
    1.如何得到泛型以及其ActualTypeArguments

    ---------------------------------------------------------------------------------------------

    6.
    posted on 2006-08-15 14:09 方佳瑋 閱讀(2984) 評論(1)  編輯  收藏 所屬分類: JAVA API 自學

    評論

    # re: [整理] java.lang.reflect 2008-09-12 09:41 的撒旦撒
    不錯  回復  更多評論
      


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


    網(wǎng)站導航:
     
    主站蜘蛛池模板: 日本免费一区尤物| 国产成人高清亚洲一区91| 国产一区在线观看免费| 99re在线这里只有精品免费| 猫咪免费观看人成网站在线| 国产亚洲精品VA片在线播放| 97亚洲熟妇自偷自拍另类图片| 亚洲日韩精品无码专区网站| 午夜高清免费在线观看| 精品福利一区二区三区免费视频| a级在线观看免费| 国产精品免费在线播放| 美女免费视频一区二区三区| 亚洲午夜成人精品无码色欲| 亚洲国产成人精品电影| 午夜亚洲国产理论秋霞| 国产国拍亚洲精品mv在线观看| 亚洲精品麻豆av| 免费在线观看毛片| 免费国产成人午夜私人影视 | 午夜亚洲av永久无码精品| 操美女视频免费网站| 精品久久久久成人码免费动漫| 131美女爱做免费毛片| 91香焦国产线观看看免费| 日韩内射激情视频在线播放免费| 免费成人在线电影| 亚洲一区二区在线免费观看| 久久久久国色av免费看| 久久爰www免费人成| 日本免费人成视频在线观看| 久操视频免费观看| 9277手机在线视频观看免费| 亚洲免费在线视频| 最近2019中文字幕免费直播| 精品国产sm捆绑最大网免费站| 国产精品入口麻豆免费观看| 精品久久久久成人码免费动漫| 午夜精品在线免费观看| 国产乱子伦精品免费女| 亚洲欧洲久久av|