日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

反射小案例学习笔记

發布時間:2025/3/21 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 反射小案例学习笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

案例一

/*** ArrayList<Integer>的一個對象,在這個集合中添加一個字符串數據,如何實現呢?* 泛型只在編譯期有效,在運行期會被擦除掉* @throws Exception*/@Testpublic void ArrayTest() throws Exception {ArrayList<Integer> list = new ArrayList<>();list.add(111);list.add(222);Class clazz = Class.forName("java.util.ArrayList"); //獲取字節碼對象Method m = clazz.getMethod("add", Object.class); //獲取add方法m.invoke(list, "abc");System.out.println(list);}

案例二

import java.lang.reflect.Field;/*** @author lw* @createTime 2018/8/12 11:41* @description 此方法可將obj對象中名為propertyName的屬性的值設置為value。*/ public class Tool {public void setProperty(Object obj, String propertyName, Object value) throws Exception {Class clazz = obj.getClass(); //獲取字節碼對象Field f = clazz.getDeclaredField(propertyName); //暴力反射獲取字段f.setAccessible(true); //去除權限f.set(obj, value);} }/*** * A:案例演示* public void setProperty(Object obj, String propertyName, Object value){},* 此方法可將obj對象中名為propertyName的屬性的值設置為value。* @throws Exception*/@Testpublic void setProperty() throws Exception {Student student = new Student("您好",23);System.out.println(student);Tool t = new Tool();t.setProperty(student,"name","美麗");System.out.println(student);}

案例三

/*** * 已知一個類,定義如下:* 包名: com.example.reflect.DemoClass;** public class DemoClass {public void run() {System.out.println("welcome to beijinf!");}}* (1) 寫一個Properties格式的配置文件,配置類的完整名稱。* (2) 寫一個程序,讀取這個Properties配置文件,獲得類的完整名稱并加載這個類,用反射的方式運行run方法。* @throws Exception*/@Testpublic void Rerundome() throws Exception {BufferedReader br = new BufferedReader(new FileReader("xxx.properties"));Class clazz = Class.forName(br.readLine());DemoClass dc = (DemoClass) clazz.newInstance();dc.run();}

person方法

class Student {private String name;private int age;public Student() {super();}public Student(String name, int age) {super();this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "Student [name=" + name + ", age=" + age + "]";}}/*** @author lw* @createTime 2018/8/12 11:52* @description*/ public class DemoClass {public void run() {System.out.println("welcome to beijing!");} }

轉載于:https://blog.51cto.com/357712148/2158308

總結

以上是生活随笔為你收集整理的反射小案例学习笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。