Java 类反射
Reflection允許運行中的Java程序對自身進行檢查并能直接操作程序的內部屬性。
以下為類的成員方法的查詢程序。
import java.lang.reflect.Method; import java.util.Scanner;public class Main {public static void main(String[] args) {try{System.out.println("請輸入Java類的名稱");Scanner scanner = new Scanner(System.in);String className = scanner.next();Class<?> c = Class.forName(className);Method[] declaredMethods = c.getDeclaredMethods();System.out.println("類" + className + "的方法包括:");for (int i = 0; i < declaredMethods.length; i++) {System.out.println(declaredMethods[i].toString());}} catch (ClassNotFoundException e) {e.printStackTrace();System.out.println(e);}} }在控制臺輸入:
請輸入Java類的名稱 java.util.Scanner查詢結果
- 該程序使用Class.forName載入指定的類,然后調用 getDeclareMethods 來獲取這個類中定義的方法列表。import java.lang.reflect.Method 是用來描述某個類中單個方法的類。
- 對于構造函數、成員變量和成員方法來說,java.lang.Class提供4種獨立的反射調用。以不同的方式來獲得信息。
使用反射的時候遵循的3個步驟:
-
(1)獲得想要操作的類的 java.lang.Class對象。常見的方式為:
- Class c = Class.forName(“java.lang.String”): 得到一個String類的對象。
- Class c = int.class: 得到基本類型整型(int類型)。
- Class c = Integer.TYPE: 這條語句得到基本類型整型的封裝類 Integer 定義的 TYPE 字段。
-
(2)調用上述的getDeclaredMethods()等方法,獲得該類中定義的所有的成員方法或調用上述的getDeclaredFields()等方法,獲得該類中定義的所有的成員變量。
-
(3)使用 reflection API 進一步獲取相關信息。
Class c = Class.forName("java.lang.String"); Method m[] = c.getDeclaredMethods(); System.out.println(m[0].toString());將以文本方式打印出String 中定義的第一個方法的原型。
總結
- 上一篇: 汇编语言 实现一个数字的平方
- 下一篇: 汇编 输入输出指令