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

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

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

    隨筆-124  評論-49  文章-56  trackbacks-0

    java.lang.Class
    在類加載時,java虛擬機會自動創(chuàng)建相應的class對象
    1.獲取class對象
    Class c=Class.froName("c");
    2.解析屬性信息
    Field[] fs=c.getDeclaredFields();
    for(Field f:fs){
       System.out.println("屬性:"+f.toString());
       System.out.println("數(shù)據(jù)類型:"+f.getType());
       System.out.println("屬性名:"+f.getName());
       int mod=f.getModifeers();
       System.out.println("屬性修飾符:"+Modifier.toString(mod));
    }
    3.解析方法信息
    Method[] ms=c.getDeclaredMethods();
    for(Method m:ms){
       System.out.println("方法:"+m.toString());
       System.out.println("方法名:"+m.getName());
       int mod=f.getModifeers();
       System.out.println("方法修飾符:"+Modifier.toString(mod));
       Class pts[] = m.getParameterTypes();//得到參數(shù)列表
       m.getReturnType();//得到返回值類型
    }
    4.解析構(gòu)造方法
    Constructor[]  cs=c.getDeclaredConstructors();
    for(Constructor con:cs){
       System.out.println("構(gòu)造方法:"+con.toString());
       System.out.println("方法名:"+con.getName());
       System.out.println("方法修飾符:"+Modifier.toString(mod));
       Class pts[] = m.getParameterTypes();//得到參數(shù)列表
       m.getReturnType();//得到返回值類型
    }
    5.解析當前類類型的父類
    Class superClass=c.getSuperclass();
    6.解析當前類實現(xiàn)的接口
    Class[] interfaces=c.getInterfaces();
    for(Class cl:interfaces){
       System.out.println(cl.toString());
    }
    7.解析當前包
    Package p=c.getPackage();
    ---------------------------------------------------------------

    1.直接操作對象屬性
    User u=new User();
    Class c=u.getClass();//同Class.forName("p2.User");
    Field f=c.getField(fieldName);
    Object fv=f.get(u);//得到對象u實例對應f屬性的值
    f.set(u,value);設置u對象f屬性的值為value
    2.調(diào)用對象成員方法
    Class[] argTypes={String.class,int.class};
    //上行等同Class[] argTypes=new Class[]{String.class,int.class};
    Object[] args=new Object[]{"王五",99};

    Class c-u.getClass();
    Method m=c.getMethod(methodName,argTypes);
    Object result=m.invoke(u,args);
    System.out.println(result);
    3.調(diào)用類成員方法
    Class c=Class.forName("className");
    Method m=c.getMethod(methodName,argTypes);
    Object result=m.invoke(null,args);//沒有對象,所以指定為null
    ---------------------------------------------------------------
    獲取class對象
    *針對引用數(shù)據(jù)類型
    1.調(diào)用靜態(tài)方法Class.forName()
    Class.forName("p1.User");
    2.調(diào)用Object類中定義的getClass()方法
    User u=new User();
    Class c=u.getClass();
    3.使用.class表達式
    Class c1=String.class;
    Class c2=p1.User.class;
    *針對基本數(shù)據(jù)類型及void
    1.使用.class表達式
    Class c1=int.class;
    Class c2=double.class;
    Class c3=void.class;
    2.調(diào)用相應封裝類的.Type屬性
    Class c1=Integer.TYPE;
    Class c2=Double.TYPE;
    Class c3=Void.TYPE;
    ----------------------------------------------
    java.lang.reflect.Field
    1.獲取Field對類(Class類提供)
    public Field[] getDeclaredFields()//當前類的所有屬性,不包括父類
    public Field getDeclaredField(String name)//當前類指定屬性,不包括父類
    public Field[] getFields()//當前類所有public的屬性,包括父類
    public Field getField(String name)//當前類指定的public屬性,包括父類
    2.Field類主要成員方法
    public Object get(Object obj)
    pbulic void set(Object obj,Object value)
    public xxx getXxx(Object obj)
    public void setXxx(Object obj,xxx x)//xxx為基本數(shù)據(jù)類型
    public String getName()
    public int getModifiers()//當前屬性的修飾符
    public <T extends Annotation> T getAnnotation(Class<T> annotationClass)
    返回當前屬性前面的注釋
    public String toString()
    public boolean equals(Object obj)
    ------------------------------------------------------------------------
    java.lang.reflect.Method
    1.獲取Method對類(Class類提供)
    public Method[] getDeclaredMethods()//當前類的所有方法,不包括父類
    public Method getDeclaredMethod(String name,Class<?> parameterTypes)//當前類指定方法,不包括父類
    public Method[] getMethods()//當前類所有public的方法,包括父類
    public Method getMethod(String name)//當前類指定的public方法,包括父類
    2.Method類主要成員方法
    public Object invoke(Object obj,Object args)****
    public String getName()
    public Class<?>[] getParameterTypes()
    public int getModifiers()//當前屬性的修飾符
    public Class<?> getReturnType()
    public Class<?>[] getExceptionTypes()
    public <T extends Annotation> T getAnnotation(Class<T> annotationClass)
    返回當前屬性前面的注釋
    public String toString()
    public boolean equals(Object obj)
    -----------------------------------------------------------
    java.lang.reflect.Modifier
    1.獲取Modifier對象
    public int getModifieers()
    2.Modifier類方法
    public static boolean isPublic(int mod)
    public static boolean isPrivate(int mod)

    --------------------------------------------------------------
    java.lang.reflect.Constructor
    public T newInstance(Object initargs)

    Class c=Class.forName("p1.Person");
    Class[] argTypes={String.class,int.class};//參數(shù)列表
    Constructor cons=c.getConstructor(argTypes);
    Object obj=cons.newInstance("中國",5000);

    調(diào)用無參構(gòu)造方法
    cons=c.getconstructor();
    obj=constructor.newInstance();
    obj=c.newInstance();
    ----------------------------------------------------------------
    java.lang.reflect.Array

    class類方法
    public Class<?> getComponentType()//返回數(shù)組對象的數(shù)據(jù)類型

    posted on 2009-11-29 21:24 junly 閱讀(200) 評論(0)  編輯  收藏 所屬分類: java
    主站蜘蛛池模板: 亚洲中文字幕丝袜制服一区| 亚洲最大av无码网址| 亚洲成AV人片在线播放无码| 亚洲AV无码一区二区三区系列| 亚洲av永久无码精品天堂久久 | 久久免费国产视频| 拍拍拍又黄又爽无挡视频免费| 成人爱做日本视频免费| 亚洲人成人77777网站| 亚洲午夜成人精品无码色欲| 二区久久国产乱子伦免费精品| 最近2019中文免费字幕| 亚洲妇女熟BBW| 91精品免费观看| 区久久AAA片69亚洲| 亚洲s码欧洲m码吹潮| 最近中文字幕完整免费视频ww| 亚洲精品免费在线| 国产精品一区二区三区免费| 巨胸喷奶水视频www网免费| 亚洲精品日韩专区silk| 在线观看的免费网站| 亚洲成人免费在线观看| 亚洲精品免费在线观看| 亚洲人成网站在线播放vr | 久久综合国产乱子伦精品免费 | 亚洲日韩中文在线精品第一| 色www永久免费网站| 亚洲精品国产精品乱码不卡| 亚洲AV无码资源在线观看| 无码国产精品一区二区免费I6| 久久精品国产亚洲AV未满十八| 永久免费AV无码国产网站| 亚洲AV无码一区二区一二区| 久久亚洲国产成人影院网站| 国产亚洲情侣久久精品| 成人爱做日本视频免费| 岛国精品一区免费视频在线观看 | 国产成人免费高清激情明星| 亚洲精品色午夜无码专区日韩| 国产一级a毛一级a看免费人娇|