<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>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                [TOC] > ### `java.lang.Class` * 所有的反射都要從類 `java.lang.Class`開始進行,而最關鍵的是這個類有三種實例化方法: * 調用`Object`類中的`getClass()`方法: ``` import java.util.Date; public class ReflectTest { public static void main(String[] args) { Date date = new Date(); Class<?> cls = date.getClass(); System.out.println(cls); } } "class java.util.Date" ``` * 使用`類.class`取得: ``` import java.util.Date; public class ReflectTest { public static void main(String[] args) { Class<?> cls = Date.class; System.out.println(cls); } } "class java.util.Date" ``` * 通過`Class.forName("com.xxx.ClassName")` ``` public class ReflectTest5 { public static void main(String[] args) throws ClassNotFoundException { Class<?> cls = Class.forName("java.util.Date"); System.out.println(cls); } } "class java.util.Date" ``` <br/> > ### 反射類實例化對象 ``` Class<?> cls = Class.forName("java.util.Date"); Object date = cls.newInstance(); ``` <br/> > ### 通過反射實現的工廠模式 * 在`Factory`類中通過`className`反射出類并實例化對象,實現了`Factory`與`Fruit`接口實現類的解耦,當`Fruit`新增時無需修改`Factory`類。 ``` // 轉自 https://juejin.im/post/5ab99b10f265da239c7b5e52 interface Fruit{ void eat(); } class Apple implements Fruit{ @Override public void eat() { System.out.println("* 吃蘋果 *"); } } class Orange implements Fruit{ @Override public void eat() { System.out.println("* 吃橘子 *"); } } class Factory{ public static Fruit getInstance(String className){ Fruit f = null; try { // 根據className反射出類并實例化對象 // 優化了Factory,與Fruit接口的實現類解耦 // 若不使用反射,則需要程序判斷className并new相應的實例,當Fruit新增時,Factory也要修改 f = (Fruit) Class.forName(className).newInstance(); } catch (Exception e) { e.printStackTrace(); } return f; } } public class TestFactory { public static void main(String[] args) { Fruit f = Factory.getInstance("com.jkx.lzh.test.Apple"); f.eat(); } } ``` <br/> > ### 獲取類的所有變量信息 > ### 獲取類的所有方法信息 > ### 訪問或操作類的私有變量和方法 <br/> <br/> *** 參考: [淺析JAVA反射](https://juejin.im/post/5ab99b10f265da239c7b5e52) [Java 反射由淺入深 ](https://juejin.im/post/598ea9116fb9a03c335a99a4)
                  <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>

                              哎呀哎呀视频在线观看