Java 类反射
Reflection允許運(yùn)行中的Java程序?qū)ψ陨磉M(jìn)行檢查并能直接操作程序的內(nèi)部屬性。
以下為類的成員方法的查詢程序。
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查詢結(jié)果
- 該程序使用Class.forName載入指定的類,然后調(diào)用 getDeclareMethods 來獲取這個類中定義的方法列表。import java.lang.reflect.Method 是用來描述某個類中單個方法的類。
- 對于構(gòu)造函數(shù)、成員變量和成員方法來說,java.lang.Class提供4種獨(dú)立的反射調(diào)用。以不同的方式來獲得信息。
使用反射的時(shí)候遵循的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)調(diào)用上述的getDeclaredMethods()等方法,獲得該類中定義的所有的成員方法或調(diào)用上述的getDeclaredFields()等方法,獲得該類中定義的所有的成員變量。
-
(3)使用 reflection API 進(jìn)一步獲取相關(guān)信息。
Class c = Class.forName("java.lang.String"); Method m[] = c.getDeclaredMethods(); System.out.println(m[0].toString());將以文本方式打印出String 中定義的第一個方法的原型。
總結(jié)
- 上一篇: 汇编语言 实现一个数字的平方
- 下一篇: 汇编 输入输出指令