什麼是反射技巧? Java中最常用的反射技術實例
什麼是反射技術?
動態取得指定類別以及類別中的內容(成員),並執行其內容。應用程式已經運行,無法在其中進行new物件的建立,就無法使用物件。這時可以根據設定檔的類別全名去找對應的字節碼文件,並載入進內存,並建立該類別物件實例。這就需要使用反射技術完成,還有就是在一個類別中,為了不讓外界存取到有的屬性和方法,通常將其設定為private,這時我們就可以java反射帶來的便利存取類別的私有屬性及方法:
最常用的反射技術
/**Person类****/package com.qiu;public class Person { private String name; private static Integer age; public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } @Override public String toString() { return "Person [name=" + name + ", age=" + age + "]"; } public String toString1() { return "Person [name=" + name + ", age=" + age + "]"; } public String demo(String de) { return de; } }
package com.qiu;import java.lang.reflect.Field;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;/** * 测试类 * @author qiu * */public class Test { public static void main(String[] args) throws Exception { //加载Person.class文件进内存 Class clazz = Class.forName("com.qiu.Person"); //获取该类指定的属性age getDeclaredField----> 获取所有属性,包括私有 Field field = clazz.getDeclaredField("age"); //获取该类指定的属性name Field field2 = clazz.getDeclaredField("name"); //通过clazz实列化对象 Object obj = clazz.newInstance(); //暴力访问。如果不设置默认为false是访问不到私有属性的。 field.setAccessible(true); //暴力访问。 field2.setAccessible(true); //初始化属性值 field.set(obj, 123); field2.set(obj, "李白"); //获取该字段的值。 Object o = field.get(obj); Object o1 = field2.get(obj); System.out.println(o); System.out.println(o1); /*** 通过更简洁的方法获取指定方法 **/ Method method = clazz.getMethod("getAge", null); System.out.println(method.invoke(obj, null)); /******** 通过反射获取带参数的方法 ******************************/ Class clazz2 = Class.forName("com.qiu.Person"); Method method41 = clazz2.getMethod("demo",String.class); Object obj3 = clazz.newInstance(); System.out.println(method41.invoke(obj3, "邱某")); } }
列印結果如下:
123
李白
123
邱某
相關文章:
以上是什麼是反射技巧? Java中最常用的反射技術實例的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

公司安全軟件導致部分應用無法正常運行的排查與解決方法許多公司為了保障內部網絡安全,會部署安全軟件。 ...

系統對接中的字段映射處理在進行系統對接時,常常會遇到一個棘手的問題:如何將A系統的接口字段有效地映�...

在使用MyBatis-Plus或其他ORM框架進行數據庫操作時,經常需要根據實體類的屬性名構造查詢條件。如果每次都手動...

將姓名轉換為數字以實現排序的解決方案在許多應用場景中,用戶可能需要在群組中進行排序,尤其是在一個用...

在使用IntelliJIDEAUltimate版本啟動Spring...

Java對象與數組的轉換:深入探討強制類型轉換的風險與正確方法很多Java初學者會遇到將一個對象轉換成數組的�...

在使用TKMyBatis進行數據庫查詢時,如何優雅地獲取實體類變量名以構建查詢條件,是一個常見的難題。本文將針...

電商平台SKU和SPU表設計詳解本文將探討電商平台中SKU和SPU的數據庫設計問題,特別是如何處理用戶自定義銷售屬...
