<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                ### 一,反射的簡介 反射是java中一種很強大的工具,能夠動態分析java的類的能力。在運行狀態中,對于任意一個類,通過反射都能知道這個類的屬性和方法。這種動態獲取的信息以及動態調用對象的方法的功能稱為Java語言的反射機制。反射的概念是由Smith在1982年首次提出的。 ### 二、反射的作用 java的發射機制提供如下幾個方面的作用: 1.在運行時判斷任意一個對象所屬的類。 2.在運行時構造任意一個類的對象。 3.在運行時構造任意一個類所有的成員變量和方法。 4.在運行時動態創建對象,從一個對象是屬性拷貝到另一個對象相應的屬性上。 5.創建動態代理。 ### 三、反射中常用的API java.lang.Class; java.lang.reflect.Constructor; java.lang.reflect.Field; java.lang.reflect.Method; java.lang.reflect.Modifier; ### 四、反射機制API的使用 **1.class類對象** class類對象是反射機制的根源,由JVM生成(由于class類沒有public方法,無法直接new 一個class對象),可以通過Object.getClass()獲得class類型的對象 下面介紹如何獲取Class對象: A.通過getClass()方法獲取,如String s=”agagad”;Class c=s.getClass(); B通過Class.forName()獲取(基本數據類型除外)。如Class c=Class.forName(“java.lang.String”); C.通過.class 如Class c=Person.class;Class c1=String.class等 D.newInstance創建一個類對象 **2.Field的作用** Field可以描述一個類的成員變量,且可以通過getDeclareFields()獲取類的所有成員變量。 Class c = Class.forName(“java.lang.Integer”); //獲取所有的成員變量 Field[] fs = c.getDeclaredFields(); 通過setAccessible()設置成員變量值可訪問的 實例如下: ~~~ Class c=Class.forName("com.greekw.pojo.User"); System.out.println("User類的全路徑類名"+c.getName()); System.out.println("User類的類名"+c.getSimpleName()); User user=new User(); //獲取類中所有的屬性 Field[] fields=c.getDeclaredFields(); for(Field f:fields){ //獲取變量的修飾符 System.out.println(Modifier.toString(f.getModifiers())+" "); //獲取變量的類型 System.out.println(f.getType().getSimpleName()); //獲取變量名 System.out.println(f.getName()); //獲取成員變量的值 String fName=f.getName(); f.setAccessible(true); System.out.println(fName+"的值為:"+f.get(user)); } ~~~ **3.Method類** Method類可描述類的所有方法,可以通過getDeclaredMethods()獲取所有方法 實例如下: ~~~ //獲取一個類的所有方法 Class c=Class.forName("com.greekw.pojo.User"); Method[] methods=c.getDeclaredMethods(); for(Method m:methods){ //獲取方法修飾符 System.out.println(Modifier.toString(m.getModifiers())+" "); //獲取方法類型 System.out.println(m.getReturnType().getName()+" "); //獲取方法名 System.out.println(m.getName()+" "); //獲取方法的參數 Class[] params=m.getParameterTypes(); for(int i=0;i<params.length;i++){ Class pc=params[i]; System.out.println(pc.getSimpleName()+","); } } ~~~ 調用對象的方法,實現如下: ~~~ //調用對象的方法 m.setAccessible(true);//設置對象的屬性和方法是可訪問的 if(m.getName().equals("setIntValue")){ m.invoke(user, 50000);//修改屬性的值 } if(m.getName().equals("setName")){ m.invoke(user, "測試"); } ~~~ **4.關于instanceof** instanceof,用來判斷某個對象是否是某種類型,計算結果是一個boolean類型的值 如果一個對象繼承了某個類,或實現了某些接口,那么這個對象都是屬于哪些類型的 實例如下: ~~~ LittleDog ld=new LittleDog(); if(ld instanceof LittleDog){ System.out.println(ld的對象類型是LittleDog); } ~~~ 總之,java的反射機制是代碼更加靈活,更容易體現面向對象的思想,在設計模式,配置文件讀取,以及三大框架中都有用到,是一種構建工具類的利器。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看