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

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # Java 反射示例 > 原文: [https://javatutorial.net/java-reflection-example](https://javatutorial.net/java-reflection-example) 反射(這是 Java 的功能)允許執行 Java 程序檢查自身(或其他代碼)并操縱程序的內部屬性,例如獲取成員的名稱并對其執行某些操作,例如刪除或顯示它們。 ![java-featured-image](https://img.kancloud.cn/05/3e/053ee0bb59842d92359246c98f815e0c_780x330.jpg) ![Reflection api java](https://img.kancloud.cn/a3/39/a33942edd42cece9b19d206d7aa06c96_590x106.jpg) 默認情況下,Java 中的每個對象都有`getClass()`,它基本上確定當前對象的類(即使在編譯時未知)。 反射使您可以編寫在編譯時不必“識別”所有內容的程序,而可以使程序動態化,因為它們可以在運行時鏈接在一起。 ## Java 反射的簡短示例 ```java import java.lang.reflect.*; public class Main { public void print() { System.out.println("print"); } 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) { // manipulate e System.out.println(); } } } ``` 在這里,`class.forName`為我們提供了指定的類,然后,它調用`getDeclaredMethods`,其目的是檢索在該類中定義的方法的列表。 方法`m[]`存儲我們要在其上調用該方法的類的所有已聲明方法,在這種情況下為`String`。 嘗試并在這里捕獲是必需的,就好像您沒有它一樣,您會收到此錯誤: ![Reflection API java error](https://img.kancloud.cn/ce/59/ce591dabed2541542fd9d424a2dc08c6_869x86.jpg) **輸出** ```java public boolean java.lang.String.equals(java.lang.Object) public java.lang.String java.lang.String.toString() public int java.lang.String.hashCode() public int java.lang.String.compareTo(java.lang.String) public int java.lang.String.compareTo(java.lang.Object) public int java.lang.String.indexOf(java.lang.String,int) public int java.lang.String.indexOf(java.lang.String) public int java.lang.String.indexOf(int,int) public int java.lang.String.indexOf(int) static int java.lang.String.indexOf(char[],int,int,char[],int,int,int) static int java.lang.String.indexOf(char[],int,int,java.lang.String,int) public static java.lang.String java.lang.String.valueOf(int) public static java.lang.String java.lang.String.valueOf(long) public static java.lang.String java.lang.String.valueOf(float) public static java.lang.String java.lang.String.valueOf(boolean) public static java.lang.String java.lang.String.valueOf(char[]) public static java.lang.String java.lang.String.valueOf(char[],int,int) public static java.lang.String java.lang.String.valueOf(java.lang.Object) public static java.lang.String java.lang.String.valueOf(char) public static java.lang.String java.lang.String.valueOf(double) public char java.lang.String.charAt(int) private static void java.lang.String.checkBounds(byte[],int,int) public int java.lang.String.codePointAt(int) public int java.lang.String.codePointBefore(int) public int java.lang.String.codePointCount(int,int) public int java.lang.String.compareToIgnoreCase(java.lang.String) public java.lang.String java.lang.String.concat(java.lang.String) public boolean java.lang.String.contains(java.lang.CharSequence) public boolean java.lang.String.contentEquals(java.lang.CharSequence) public boolean java.lang.String.contentEquals(java.lang.StringBuffer) public static java.lang.String java.lang.String.copyValueOf(char[]) public static java.lang.String java.lang.String.copyValueOf(char[],int,int) public boolean java.lang.String.endsWith(java.lang.String) public boolean java.lang.String.equalsIgnoreCase(java.lang.String) public static java.lang.String java.lang.String.format(java.util.Locale,java.lang.String,java.lang.Object[]) public static java.lang.String java.lang.String.format(java.lang.String,java.lang.Object[]) public void java.lang.String.getBytes(int,int,byte[],int) public byte[] java.lang.String.getBytes(java.nio.charset.Charset) public byte[] java.lang.String.getBytes(java.lang.String) throws java.io.UnsupportedEncodingException public byte[] java.lang.String.getBytes() public void java.lang.String.getChars(int,int,char[],int) void java.lang.String.getChars(char[],int) private int java.lang.String.indexOfSupplementary(int,int) public native java.lang.String java.lang.String.intern() public boolean java.lang.String.isEmpty() public static java.lang.String java.lang.String.join(java.lang.CharSequence,java.lang.CharSequence[]) public static java.lang.String java.lang.String.join(java.lang.CharSequence,java.lang.Iterable) public int java.lang.String.lastIndexOf(int) public int java.lang.String.lastIndexOf(java.lang.String) static int java.lang.String.lastIndexOf(char[],int,int,java.lang.String,int) public int java.lang.String.lastIndexOf(java.lang.String,int) public int java.lang.String.lastIndexOf(int,int) static int java.lang.String.lastIndexOf(char[],int,int,char[],int,int,int) private int java.lang.String.lastIndexOfSupplementary(int,int) public int java.lang.String.length() public boolean java.lang.String.matches(java.lang.String) private boolean java.lang.String.nonSyncContentEquals(java.lang.AbstractStringBuilder) public int java.lang.String.offsetByCodePoints(int,int) public boolean java.lang.String.regionMatches(int,java.lang.String,int,int) public boolean java.lang.String.regionMatches(boolean,int,java.lang.String,int,int) public java.lang.String java.lang.String.replace(char,char) public java.lang.String java.lang.String.replace(java.lang.CharSequence,java.lang.CharSequence) public java.lang.String java.lang.String.replaceAll(java.lang.String,java.lang.String) public java.lang.String java.lang.String.replaceFirst(java.lang.String,java.lang.String) public java.lang.String[] java.lang.String.split(java.lang.String) public java.lang.String[] java.lang.String.split(java.lang.String,int) public boolean java.lang.String.startsWith(java.lang.String,int) public boolean java.lang.String.startsWith(java.lang.String) public java.lang.CharSequence java.lang.String.subSequence(int,int) public java.lang.String java.lang.String.substring(int) public java.lang.String java.lang.String.substring(int,int) public char[] java.lang.String.toCharArray() public java.lang.String java.lang.String.toLowerCase(java.util.Locale) public java.lang.String java.lang.String.toLowerCase() public java.lang.String java.lang.String.toUpperCase() public java.lang.String java.lang.String.toUpperCase(java.util.Locale) public java.lang.String java.lang.String.trim() ``` 從輸出中可以看到,`String`有很多方法。 ## 設置反射 1. 首先,必須獲得一個類對象。 獲得它的最常見方法是 ```java Class class = Class.forName("java.lang.'class name, for example String'"); ``` 2. 下一步是調用方法(例如`getDeclaredMethods()`,`getFields()`等) 3. 下一步是使用反射 API 來操縱/更改信息 ## 另一個示例,遵循上述的步驟 ```java import java.lang.reflect.*; class Demo { private double exampleVariable; public Demo() { exampleVariable = 2.3; } public void method1() { System.out.println("The instance variable: " + exampleVariable); } public void method2(int n) { System.out.println("The number passed: " + n); } private void method3() { // private method System.out.println("Private method has been called"); } } class Main { public static void main(String args[]) throws Exception { Demo classToBeTested = new Demo(); // creating class object from the class using getClass() Class classObject = classToBeTested.getClass(); System.out.println("Name of class: " + classObject.getName()); // getting the constructor using getConstructor() Constructor constructor = classObject.getConstructor(); System.out.println("Name of constructor: " + constructor.getName()); // stores all the methods the class has Method[] methods = classObject.getMethods(); // printing all method names for (Method method : methods) System.out.println(method.getName()); } } ``` **輸出** ```java Name of class: Demo Name of constructor: Demo method1 method2 wait wait wait equals toString hashCode getClass notify notifyAll ```
                  <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>

                              哎呀哎呀视频在线观看